Python | Python-Kurs | Layout |
Themen dieser Seite Weitere Seiten der Informatik-Ecke zum Thema tkinter: Programme werden erst richtig schön, wenn sie in Fenstern laufen. Python bringt eine eigene grafische Bibliothek mit, die auf Tk basiert, das seinerseits eigentlich mit der Interpretersprache Tcl eingeführt wurde. Tcl wird heute kaum noch verwendet, aber dank Python hat Tk eine weitere Verbreitung gefunden.
Ein Tkinter-Programm muss die Bibliothek tkinter importieren.
import tkinter
Unter Python 2 hieß tkinter noch Tkinter. Allerdings dürfte diese Version eigentlich nicht mehr umlaufen.
In vielen Fällen muss tkinter nachinstalliert werden. Unter Linux ist zwar Python meist schon vorinstalliert, aber tkinter könnte fehlen. Um tkinter nachzuinstallieren, benötigen Sie das Paket python-tk. Unter Debian oder Ubuntu lautet der Befehl zur Installation:
# apt-get install python-tkUnter Windows ist tkinter im Standardumfang des Python-Interpreters enthalten, wenn sie von python.org installiert wird und Tk nicht explizit abgewählt wurde.
Eine kleine Anwendung
Zum Einstieg soll hier eine kleine Beispielanwendung gezeigt werden, die ein Fenster mit einem Button präsentiert und auf den Druck des Buttons das Programm wieder beendet.Als Entwicklungsumgebung können Sie Visual Studio Code verwenden, was als Open Source unter Linux, Mac und Windows zur Verfügung steht.
code firsttk.py
Es erscheint ein Fenster mit einem Editorbereich, in den Sie den Source-Code unten eingeben, oder mit [Strg]+[C] kopieren und mit [Strg]+[V] einfügen können.
Der erste Schritt im Quelltext
Um Tk zu benutzen, muss die Bibliothek tkinter eingebunden werden.
- Ein Fenster wird durch den Aufruf von Tk() erzeugt. Gleichzeitig erhalten Sie ein Objekt der Klasse Tk, über das Sie das Fenster weiter bearbeiten können.
- Es können weitere Elemente erzeugt werden, die als Parameter immer das Elternfenster erwarten. Hier ist es ein Label und ein Button.
- Mit der Methode pack werden werden sich die Elemente ihren Platz im Fenster reservieren und einnehmen.
- Durch den Start von mainloop wird das Fenster gestartet und wartet auf Benutzeraktionen.
- Derzeit können Sie das Fenster lediglich über das Fensterschließkreuz beenden. Aber immerhin.
#!/usr/bin/python3 import tkinter fenster = tkinter.Tk() anzeige = tkinter.Label(fenster, text="Guten Tag") knopf = tkinter.Button(fenster, text="Ende") anzeige.pack() knopf.pack() fenster.mainloop()Sie sehen, dass sowohl Label als auch Button durch den benamten Parameter text beschriftet werden. Dieses Konzept werden Sie in tkinter noch öfter sehen.
Aus dem Visual Studio Code können Sie das Programm mit [F5] starten. Sie können es natürlich auch von der Konsole aus mit dem Interpreter starten.
Button mit Callback aktivieren
Leider passiert nichts, wenn Sie auf den Knopf drücken. Um das zu erreichen, müssen Sie eine Callback-Funktion definieren und diese an den Button binden.
- Die Callback-Funktion ende hat keinen Parameter. Die Funktion sorgt mit dem Aufruf von sys.exit(0) für das Ende der Anwendung und damit für das Schließen des Fensters.
- Damit die Callback-Funktion beim Drücken des Buttons aufgerufen wird, muss dem Button bei seiner Erzeugung die Funktion als Parameter command übergeben werden.
#!/usr/bin/python3 import tkinter, sys def ende(): sys.exit(0) fenster = tkinter.Tk() anzeige = tkinter.Label(fenster, text="Guten Tag") knopf = tkinter.Button(fenster, text="Ende", command=ende) anzeige.pack() knopf.pack() fenster.mainloop()