Theorie: Label, Buttons & Message-Boxen



Was ist Tkinter?

Erklären wir die Gleichung "GUI = tkinter + Python": GUI bedeutet graphical user interface, zu deutsch sind das die vielen Fenster, Buttons und Menüs, die einem heute begegnen. Will man so etwas in Python schreiben, benötigt man eine Fenster-Bibliothek, genau das leistet tkinter! Tkinter bedeutet Tk interface, also eine Schnittstelle zu Tk, und Tk ist eine "einfache" Fensterbibliothek geschrieben in Tcl (eine Programmiersprache, Tcl steht für Tool command language, Tk für Tool kit). Hier ein Beispiel (in Python):

Die grafischen Elemente wie Buttons und Menüs haben einen Namen: Widget (=Window Gadget). Ein Widget hat normalerweise bestimmte Eigenschaften, im Beispiel oben etwa die Hintergrundfarbe

und bestimmte Methoden, das sind Befehle, die die Widgets "verstehen". Ein sehr wichtiger Befehl ist beispielsweise pack, mit diesem Befehl wird der Text überhaupt erst angezeigt!


Label-Widget

Das Label-Widget dient zur Beschriftung, das folgende Python-Programm erzeugt ein Label:

1    from tkinter import *
2    root=Tk()
3    lab=Label(root,text="Viel Spass mit dem Tkinter-Tutorial")
4    lab.pack()
5    root.mainloop()

Erklärung:


Button-Widget

Buttons sind zum Klicken da, in Tkinter geht das so:

1    from tkinter import *
2    root=Tk()
3    but=Button(root,text="Wo ist Tommy?")
4    but.pack()
5    root.mainloop()

Wirkung:

Erklärung:

Überlegen wir: jedes Mal, wenn auf den Button geklickt wird, soll etwas passieren, sonst natürlich nicht. Wir müssen also den Klick mit etwas verbinden, beispielsweise mit einer Ausgabe, für die Ausgabe haben wir Labels, also verbinden wir unseren Button mit der Ausgabe eines Labels. Dafür gibt es in Tkinter den command-Parameter:

1    from tkinter import *
2    def antwort():
3        lab=Label(root,text="Hier nicht!")
4        lab.pack()
5
6    root=Tk()
7    but=Button(root,text="Wo ist Tommy?", command=antwort)
8    but.pack()
9    root.mainloop()

Erklärung:

Jetzt drücken wir mehrmals auf den Button, aber überzeugend, na ja, für den Anfang . . .


Message-Boxen

Was wir brauchen, sind natürlich "Messsage-Boxen":

Und wie geht das in Python? Einfach ein Zweizeiler:

1    from tkinter import messagebox
2    messagebox.showinfo('Hier nicht!','Hier auch nicht!')

Erklärung:

Welche Message-Boxen ausser showinfo gibt es noch? Hier eine kleine Übersicht:

Der Aufruf geht fast genauso wie bei showinfo, einfach ausprobieren, wir aber kommen zum Programm des Tages:

1    from tkinter import *
2    from tkinter import messagebox
3    def antwort():
4        messagebox.showinfo('Hier nicht!','Hier auch nicht!')
5
6    root=Tk()
7    but=Button(root,text="Wo ist Tommy?",command=antwort)
8    but.pack()
9    root.mainloop()

Aufgaben

  1. Labels kann man bunt machen, probiere (in IDLE) background="blue" oder foreground="magenta"

  2. Es muss nicht immer Text sein . . ., also ersetzen wir im Button den text="Wo ist Tommy?" durch Bilder: bitmap="questhead". Statt questhead darfst du auch schreiben: error, gray75, gray50, gray25, gray12, hourglass, info, question oder warning. (gray sieht etwas komisch aus . . .)

  3. Teste Message-Boxen!

  4. Wenn man in IDLE mit Message-Boxen experimentiert, gibt Python Meldungen zurück, was sollen diese Meldungen?


→ sp, 2023-07-28