Einstieg in Tkinter

Grafische Oberflächen bestehen aus sogenannten Widgets, die meist mit der Maus bedient werden und damit eine Aktion auslösen. Widgets können sein: Buttons, ein- und mehrzeilige Eingabefelder, Labels, List- und Comboboxen … Das Programm läuft in einer „Endlosschleife“ und wartet auf Nutzereingaben mit Maus und Tastatur, mit den Aktionen ausgelöst werden, u.a. auch das Beenden des Programms.

Ein erstes Beispiel

# Tkinter wird importiert import tkinter # Funktion zum beenden des Programms. def ende(): main.destroy() # Das Hauptfenster wird erzeugt. main = tkinter.Tk() # Ein Button wird erzeugt. # Dem Button wird die Funktion ende() zugeordnet. b = tkinter.Button(main, text = "Beenden", command = ende) # Der Button wird zum Hauptfenster hinzugefügt. b.pack() # Die Hauptschleife wird gestartet. main.mainloop()

Mit import tkinter wird die Tkinter-Bibliothek importiert.

Die Funktion ende() beendet die Hauptschleife des Programms und zerstört das Tk-Objekt.

Mit main = tkinter.Tk() wird ein Objekt der Klasse Tk erzeugt. Es repräsentiert das Hauptfenster des Programms.

Mit b = tkinter.Button(main, text = "Beenden", command = ende) wird ein Objekt vom Typ Button (ein Widget) erzeugt. Das Elternobjekt ist main, also das Hauptfenster. Die Aufschrift des Buttons (Eigenschaft text) ist „Beenden“. Dem Button ist die Funktion ende() zugeordnet (command=ende), d.h. wenn der Button mit der Maus gedrückt wird (Hauptaktion des Buttons), wird die Funktion Ende aufegrufen und das Programm beendet.

Mit b.pack() wird der Button zum Hauptfenster hinzugefügt.

Mit main.mainloop() wird das Hauptfenster des Programms erzeugt und die Hauptschleife gestartet. Das Programm wartet jetzt auf Maus- und Tastaturaktionen, bis es beendet wird.

Das Programmfenster sieht eher unspektakulär aus:

Aufgabe 1

Teste das Programm! Verändere die Aufschrift des Buttons!

Weitere einfache Widgets

Bisher haben wir das Widget Button kennengelernt. Durch einen Mausklick auf einen Button können wir bestimmte Aktionen ausführen. Damit wir einfache Programme schreiben können lernen wir in diesem Abschnitt noch weitere Widgets kennen. Labels sind Beschriftungsflächen in einem Programm. Sie können Text und Bilder enthalten. Entries sind einzeilige Eingabefelder, auf deren Inhalt mit der Methode get() zugegriffen werden kann. Im

# Tkinter wird importiert import tkinter # Funktion zum Beenden der Hauptschleife def ende(): main.destroy() # Funktion zum Berechnen des Ergebnisses def ausrechnen(): # Die Zeichenkette aus dem Eingabefeld wird in der Variable eingabe abgespeichert eingabe = eEingabe.get() # Es wird versucht die Zeichenkette in eine Kommazahl umzuwandeln. try: zahl = float(eingabe) # Wenn das Umwandeln erfolgreich ist wird die Texteigenschaft des Ergenislabels geändert: # Es wird die Quadratzahl berechnet und das Ergebnis wird als Zeichenkette angehängt lErgebnis["text"] = "Ergebnis: "+str(zahl * zahl) except: # Wenn die Eingabe keine Zahl war, wird die Eigenschaft text des Ergebnislabels geändert: # Ausgabe: Bitte eine Zahl eingeben! lErgebnis["text"] = "Bitte eine Zahl eingeben!" # Das Hauptfenster wird erzeugt main = tkinter.Tk() # Ein Label für die Überschrift mit dem Text Quadratzahlen wird erzeugt lUeberschrift = tkinter.Label(main, text = "Quadratzahlen") # Die Schriftart des Labels wird geändert lUeberschrift["font"] = "Sans 16 bold" # Die Überschrift wird zum Hauptfenster hinzugefügt lUeberschrift.pack() # Ein Eingabefeld wird erzeugt. eEingabe = tkinter.Entry(main) # Das Eingabefeld wird zum Hauptfenster hinzugefügt. eEingabe.pack() # Ein Label für das Ergebnis wird erzeugt. lErgebnis = tkinter.Label(main, text = "Ergebnis: ") # Die Labelbreite wird auf 20 Zeichen gesetzt lErgebnis["width"] = 20 # Der Labeltext wird links ausgerichtet. lErgebnis["anchor"] = "w" # Das label wird zum Hauptfenster hinzugefügt. lErgebnis.pack() # Ein Button zum Ausrechnen mit der Aufschrift "Ausrechnen" wird erzeugt # und mit der Funktion ausrechnen() verknüpft. bAusrechnen = tkinter.Button(main, text = "Ausrechnen", command = ausrechnen) # Der Button wird zum Hauptfenster hinzugefügt. bAusrechnen.pack() # Ein Button zum Beenden mit der Aufschrift "Beenden" wird erzeugt # und mit der Funktion ende() verknüpft. bEnde = tkinter.Button(main, text = "Beenden", command = ende) # Der Button wird zum Hauptfenster hinzugefügt. bEnde.pack() # Die Hauptschleife wird gestartet. main.mainloop()