Beispiel: Taschenrechner
Anhand eines Beispiels (Taschenrechner) soll eine GUI-Anwendung mit dem Python-Modul Tkinter entwickelt werden:
Um Tkinter benutzen zu können, muss zuerst das entsprechende Modul importiert werden.
# Tkinter-Modul importieren (klein schreiben für Python3)
from tkinter import *
Es werden jeweils eine Funktion benötigt für den "+"- und den "="-Button
# 2 Funktionen werden definiert
def istGleich(): # wird aufgerufen, wenn "="-Button gedrückt wird
if(strRechenzeichen.get() == '+'): # wenn vorher der "#"-Button gedrückt wurde
x.set(y.get() + float(entry.get())) # neu angezeigt wird: y + der alte Wert im Eingabefeld
def plus(): # wird aufgerufen, wenn "+"-Button gedrückt wird
strRechenzeichen.set('+') # gedrücktes Rechenzeichen merken
y.set(entry.get()) # derzeitigen Wert in y zwischenspeichern
Hier erfolgt der Programmstart. Zuerst muss Tkinter initialisiert und damit das Hauptfenster erzeugt werden.
# Programmstart
root = Tk() # zuallererst Root-Widget (Widget = Komponente einer Benutzeroberfläche) erzeugen, um Tkinter zu initialisieren und damit das Hauptfenster zu erzeugen
root.title("Rechner") # Titel des Fenster festlegen
Es gibt mehrere Widgets (Komponenten einer Benutzeroberfläche) die benutzer werden können. Hier werden eine Beschriftung (Label), ein Eingabefeld (entry) mit dem auch das Ergebnis ausgegeben wird und erstmal zwei Knöpfe (Buttons) für die "+"- und die "="-Funktion benötigt:
# Label (=Beschriftung) erzeugen
label = Label(root, text="Probieren Sie den \nTaschenrechner aus!").grid(row=0, column=0) # Label-Widget (Widget=Komponente einer Benutzeroberfläche,
# 3 spezielle Tkinter-Variablen werden benötigt
strRechenzeichen = StringVar()
x = DoubleVar()
y = DoubleVar()
# Eingabelfeld erzeugen
entry = Entry(root, textvariable=x) # Entry-Widget (Entry=Eintrag -> Eingabefeld)
entry.grid(row=1, column=0)
# 2 Button-Widgets erzeugen, die jeweils eine Funktion aufrufen
Button(root, text='+', command=plus).grid(row=2, column=0, sticky=W, pady=4)
Button(root, text='=', command=istGleich).grid(row=2, column=1, sticky=W, pady=4)
Damit sich das Fenster nicht gleich wieder von alleine schließt, muss das Programm in einer Ereignis-Schleife geöffnet bleiben:
root.mainloop() # Fenster bleibt bis zum Schließen in Ereignis-Schleife (Event loop)