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




Klassen / Classes
Layout pack