Im ersten Artikel zu Tkinter wurde ein schlichtes Fenster erstellt, das „Hello, World!“ anzeigt; der Code sah so aus:
#!/usr/bin/env python3
import tkinter as tk
root = tk.Tk()
root.title("Ein Hello-World-Programm")
root.geometry("400x200")
tk.Label(root,
text="Hello, World!",
background="green",
foreground="white",
font=("TkDefaultFont", 18)).pack(side="left")
root.mainloop()
Das Ergebnis war folgendes Fenster:
In diesem Artikel geht es nun um Widgets. Bei Widgets handelt es sich um typische GUI-Elemente wie beispielsweise Buttons, Labels oder ein Eingabefeld (entry). Im obigen Code wird bereits ein Widget verwendet: tk.Label()
. Beginnen wir das nachfolgende Beispiel mit diesem Widget.
Label
#! /usr/bin/env python3
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("Widgets")
root.geometry("400x200")
label = ttk.Label(root, text="Hello, World!")
label.pack() # <- nicht vergessen
root.mainloop()
Zum ersten Beispiel gibt es einen Unterschied. Es werden die Widgets aus dem Modul ttk
verwendet. Daher wurde eine zusätzliche Import-Anweisung hinzugefügt:
from tkinter import ttk
Dies ist nicht zwingend, jedoch sind die Widgets aus diesem Modul moderner.
Mit der Zeile
label = ttk.Label(root, text="Hello, World!")
oder
label = ttk.Label(master=root, text="Hello, World!")
wird das Widget erstellt. Dabei werden zwei Parameter angegeben. Zum einen die Information, zu welchem Element das Label-Widget hinzugefügt werden soll. Hier ist dies das root
-Fenster (Die Bezeichnung ist übrigens frei wählbar. Denkbar wäre zum Beispiel auch die Bezeichnung window
.) Zum anderen der anzuzeigende Text.
Die darauf folgende Zeile ist zwingend erforderlich. Andernfalls würde das Label nicht angezeigt werden:
label.pack()
Eingabefeld (Entry)
Zum Label-Widget soll nun ein Eingabefeld hinzugefügt werden. Dafür steht ttk.Entry()
zur Verfügung. Der Code sieht folgendermaßen aus:
entry = ttk.Entry(master=root)
entry.pack()
Auch hier könnte master=
weggelassen werden:
entry = ttk.Entry(root)
entry.pack()
Unser Fenster enthält somit nun zwei Widgets:
Button
Als drittes Widget soll noch ein Button dazukommen. Der Code ähnelt sehr dem Code zum Erstellen eines Labels:
button = ttk.Button(master=root, text="Click me")
button.pack()
Das Fenster sieht jetzt wie folgt aus:
Der Button kann angeklickt werden, allerdings verbirgt sich dahinter keine Funktionalität. Dies wird das Thema eines späteren Artikels zu Tkinter sein.
Vollständiger Code
Zum Schluss noch der vollständige Code:
#! /usr/bin/env python3
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("Widgets")
root.geometry("400x200")
label = ttk.Label(master=root, text="Hello, World!")
label.pack()
entry = ttk.Entry(master=root)
entry.pack()
button = ttk.Button(master=root, text="Click me")
button.pack()
root.mainloop()