tkinter
Erste Schritte
-
Tkinter verwendet eine ähnliche Strategie wie Java.
-
Es hat drei Layout-Managers.
-
Zum einen der Pack-Manager, der ähnlich strukturiert wie das GridBagLayout ist.
-
Dann als zweites ein Grid-Element, welches die UI_Elemente in einer Tabellenstruktur positioniert, aber auch Colomn- und Rowspan besitzt.
-
Der letzte Layout-Manager ist der place-manager, der vergleichbar mit der setBounds-Anweisung in Java ist.
-
Die set- und –get-Methoden der UI-Elemente werden via Hashtable aufgerufen.
-
Die Namensgebung der UI-Elemente ist auch etwas anders als in anderen UI-Sprachen.
Erstes Tkinter-Beispiel
01:# coding=utf8
02: import tkinter
03:
04: class MyApp(tkinter.Frame):
05:
06: def __init__(self, master=None):
07: tkinter.Frame.__init__(self, master)
08: self.pack()
09: self.setGUI()
10:
11: def setGUI(self):
12: self.nameEntry = tkinter.Entry(self)
13: self.nameEntry.pack()
14:
15: self.inputui = tkinter.StringVar()
16: self.inputui.set("Ihr Name...")
17: self.nameEntry["textvariable"] = self.inputui
18:
19: self.bnOk = tkinter.Button(self)
20: self.bnOk["text"] = "Ok"
21: self.bnOk["command"] = self.quit
22: self.bnOk.pack(side="right")
23:
24: self.bnAction = tkinter.Button(self)
25: self.bnAction["text"] = "Action"
26: self.bnAction["command"] = self.onAction
27: self.bnAction.pack(side="right")
28:
29: def onAction(self):
30: s = self.inputui.get()
31: self.inputui.set( "Text: "+s )
# 1. Aufruf-Möglichkeit
root = tkinter.Tk()
app = MyApp(root)
app.mainloop()
# 2. Aufruf-Möglichkeit
root = tkinter.Tk()
root.title("Mein Fenster")
root.geometry("250x100")
app = MyApp(root)
app.mainloop()
Erläuterung des Beispiels
-
01: Sinnvoll bei der Verwendung der deutschen Umlauten
-
02: Einfügen des Moduls tkinter
-
04: Die Klasse braucht die Oberklasse Frame (à la JFrame)
-
06: Konstruktur
-
07: Aufruf des Konstrukturs der Oberfläche. Damit ist das Fenster sichtbar.
-
07: Das Fenster hat aber nur die Mindestgröße (1. Aufruf)
-
Samples1-a.png
-
07: Mit dem Aufruf des Fensters in der zweiten Variante hat das Fenster nun eine feste Größe.
-
Samples1-b.png
-
11: Aufbau der internen Struktur
-
12: Erzeugen einer Textbox.
-
13: Einfügen in den Layout-Manager.
-
15: Um auf das Entry zugreifen zu können, benötigt man einen Mittler (StringVar)
-
16: mit "set" setzt man einen Wert. Aber noch nicht im Textfeld.
-
17: Hier wird die Verknüpfung "Variable" zum Textfeld gesetzt (Hashtable-Prinzip).
-
19: Erzeugen eines Schalters
-
20: Setzen eines Textes.
-
21: ActionListener definieren. Wenn angeklickt, wird die interne Methode "quit" aufgerufen.
-
22: Einfügen in den Layout-Manager mit der Ausrichtung "rechts".
-
24: Erzeugen eines Schalters (bnAction)
-
25: Setzen eines Textes.
-
26: ActionListener definieren. Wenn angeklickt, wird die Methode "onAction" aufgerufen.
-
27: Einfügen in den Layout-Manager mit der Ausrichtung "rechts".
-
29: onClick-Methoden des zweiten Schalters
-
30: Holen des Inhaltes des Textfeldes
-
31: Setzen des Inhaltes
-
-
Quellcode: Sample1.py
-
Samples1-c.png (1. Aufruf)
-
Samples1-d.png (2. Aufruf)
-
weitere Schritte sind im Pack-Layout zu finden