Tkinter ist eine Sprachanbindung für das GUI-ToolkitTk für die ProgrammiersprachePython. Der Name steht als Abkürzung für Tk interface. Tkinter war das erste GUI-Toolkit für Python, weshalb es inzwischen auf Mac OS und Windows auch zum Lieferumfang von Python gehört.
Durch Tkinter ist es mit Python möglich, Programme mit einer grafischen Benutzeroberfläche zu erstellen. Diese Programme und GUIs können unter Windows, Mac OS und unter allen gängigen Linux-Distributionen genutzt werden.
#Example (Hello, World):importtkinter#in python 3.x: tkinter wird kleingeschriebentk=tkinter.Tk()frame=tkinter.Frame(tk,relief="ridge",borderwidth=2)frame.pack(fill="both",expand=1)label=tkinter.Label(frame,text="Hallo Welt!")label.pack(expand=1)button=tkinter.Button(frame,text="OK",command=tk.destroy)button.pack(side="bottom")tk.mainloop()
Bedienelemente und Layout-Manager
Tkinter ermöglicht es, verschiedene Bedienelemente im Fenster einzubinden. Dazu zählen z. B. Schaltflächen (Buttons), Schieberegler und Labels. Diese können durch drei unterschiedliche Methoden mithilfe der Layout-Manager in das Fenster integriert werden, zum einen mit dem .pack()-Befehl, dem .grid()-Befehl und zum anderen mit dem .place()-Befehl.[1]
Grid-Manager
Der Grid-Manager ermöglicht es, Bedienelemente in einer Art Tabelle in das Fenster zu integrieren, das heißt, er basiert im Wesentlichen auf einer Tabelle, die in Reihen und Spalten angeordnet ist. Zur Anordnung werden 'row' und 'column' angegeben, d. h. Zeile und Spalte.
Beispiel für eine Anordnung mithilfe des Grid-Managers:
fromtkinterimport*fenster=Tk()fenster.title("Wikipedia")fenster.geometry("200x50")label=Label(fenster,text="Hallo Welt!")label.grid(row=1,column=1)#Anordnung durch Grid-Managerfenster.mainloop()
Pack-Manager
Der Pack-Manager ist (für den Entwickler) der einfachste Layout-Manager, den Python mitliefert. Statt dem Programm genaue Angaben darüber zu geben, wo man das jeweilige Bedienelement platzieren möchte, muss man lediglich den .pack()-Befehl nutzen. Python ordnet das Element anschließend von alleine an und bindet es in das Programm ein.
Beispiel für eine Anordnung mithilfe des Pack-Managers:
fromtkinterimport*fenster=Tk()fenster.title("Wikipedia")fenster.geometry("200x50")label=Label(fenster,text="Hallo Welt!")label.pack()#Anordnung durch Pack-Managerfenster.mainloop()
Place-Manager
Der Place Manager hingegen erlaubt eine sehr präzise Angabe der Position. Dabei werden Angaben über die x- und die y-Position der Bedienelemente gemacht. Zu beachten ist hierbei, dass die positive y-Richtung nach unten geht.
Beispiel für Anordnung mithilfe des Place-Managers:
fromtkinterimport*fenster=Tk()fenster.title("Wikipedia")fenster.geometry("200x50")label=Label(fenster,text="Hallo Welt!")label.place(x=10,y=10)#Anordnung durch Place-Managerfenster.mainloop()
Widgets
Label-Widget
Das Label-Widget wird verwendet, um Text im Fenster anzuzeigen.
fromtkinterimport*fenster=Tk()#Fenster erstellenlabel1=Label(fenster,text="Dies ist der angezeigte Text!")label1.place(x=10,y=10)fenster.mainloop()
Hierbei hat das Label-Widget viele Attribute:
Attribut
Beschreibung
Beispiel
text
textvarible
Der Text, der im Label angezeigt wird.
text="Hello, World!"
textvariable=tk_text_var
bg
Die Hintergrundfarbe des Labels.
bg="blue"
fg
Die Vordergrundfarbe des Texts im Label.
fg="white"
font
Die Schriftart und Größe des Texts im Label.
font=("Helvetica", 16)
width
Die Breite des Labels in Zeichen oder Pixel.
width=20
height
Die Höhe des Labels in Zeilen oder Pixel.
height=2
wraplength
Die maximale Breite des Textumbruchs in Pixel.
wraplength=200
anchor
Die Ausrichtung des Texts innerhalb des Labels.
anchor="w"
justify
Die Ausrichtung des Texts im Label.
justify="left"
relief
Der Rahmenstil des Labels.
relief="solid"
bd
Die Breite des Rahmens um das Label.
bd=2
padx, pady
Der zusätzliche horizontale und vertikale Abstand um den Text im Label.
padx=10, pady=5
image
Ein Bild, das im Label angezeigt werden soll.
image=my_image
compound
Bestimmt, wie Text und Bild im Label angeordnet werden soll.
compound="left"
bitmap
Ein Bitmap-Name, der im Label angezeigt werden soll.
bitmap="info"
underline
Die Position des unterstrichenen Buchstabens im Text.
text="Underline", underline=0
cursor
Der Cursor, der angezeigt wird, wenn die Maus über das Label bewegt wird.
cursor="hand2"
state
Der Status des Labels: normal, disabled oder active.
state="disabled"
Button-Widget
Das Button-Widget wird verwendet, um einen Knopf zu erstellen und diesen verwenden zu können.
Die Schriftart und -größe des Textes im Text-Widget.
font=("Helvetica", 12)
bg
Die Hintergrundfarbe des Text-Widgets.
bg="white"
fg
Die Textfarbe des Text-Widgets.
fg="black"
relief
Der Relief-Stil des Text-Widgets.
relief="sunken"
width
Die Breite des Text-Widgets in Zeichen.
width=40
height
Die Höhe des Text-Widgets in Zeilen.
height=10
wrap
Der Umbruchmodus des Textes ("none", "char", "word").
wrap="word"
padx
Der Abstand des Textes zum linken und rechten Rand des Widgets.
padx=5
pady
Der Abstand des Textes zum oberen und unteren Rand des Widgets.
pady=5
selectbackground
Die Hintergrundfarbe des ausgewählten Textes im Text-Widget.
selectbackground="blue"
selectforeground
Die Textfarbe des ausgewählten Textes im Text-Widget.
selectforeground="white"
insertbackground
Die Farbe des Cursors im Text-Widget.
insertbackground="red"
insertwidth
Die Breite des Cursors im Text-Widget.
insertwidth=2
insertofftime
Die Zeit in Millisekunden, die der Cursor im Text-Widget sichtbar bleibt, wenn er blinkt.
insertofftime=300
state
Der Zustand des Text-Widgets ("normal", "disabled").
state="normal"
undo
Ein boolescher Wert, der angibt, ob das Rückgängig-Feature aktiviert ist.
undo=True
maxundo
Die maximale Anzahl von Schritten, die im Rückgängig-Verlauf gespeichert werden sollen.
maxundo=100
autoseparators
Ein boolescher Wert, der angibt, ob automatisch Trennzeichen zwischen Textblöcken eingefügt werden sollen.
autoseparators=True
inactiveselectbackground
Die Hintergrundfarbe des ausgewählten Textes im Text-Widget, wenn es inaktiv ist.
inactiveselectbackground="lightgray"
inactiveselectforeground
Die Textfarbe des ausgewählten Textes im Text-Widget, wenn es inaktiv ist.
inactiveselectforeground="black"
exportselection
Ein boolescher Wert, der angibt, ob der ausgewählte Text des Text-Widgets auch außerhalb des Widgets verfügbar ist.
exportselection=True
insertborderwidth
Die Breite des Rahmens um den Cursor im Text-Widget.
insertborderwidth=1
insertontime
Die Zeit in Millisekunden, die der Cursor im Text-Widget sichtbar bleibt, bevor er blinkt.
insertontime=600
command
Eine Funktion, die ausgeführt wird, wenn der Inhalt des Text-Widgets geändert wird.
command=text_changed
Themed Tk (ttk)
Das Modul "Themed Tk" (kurz: ttk) ist ein Modul in Tkinter, welches eine Sammlung von moderner aussehenden Widgets mit erweiterter Funktionalität beinhaltet. Außerdem besitzt ttk mehr Widgets.