Wie man ein Dropdown-Menü in Tkinter erstellt
Es hat einige Methoden, um ein Dropdown-Menü in Tkinter zu erstellen.
- Verwenden Sie Combobox, wie im Kapitel Tkinter tutorial Combobox eingeführt.
- Verwenden Sie das Optionsmenü Widget.
Das OptionMenu ist dem Combobox-Widget ein wenig ähnlich, ist aber bereits im Tkinter selbst enthalten, so dass Sie nicht wie bei Combobox
ttk importieren müssen.
Tkinter OptionMenu
Beispiel
import tkinter as tk
OptionList = ["Aries", "Taurus", "Gemini", "Cancer"]
app = tk.Tk()
app.geometry("100x200")
variable = tk.StringVar(app)
variable.set(OptionList[0])
opt = tk.OptionMenu(app, variable, *OptionList)
opt.config(width=90, font=("Helvetica", 12))
opt.pack()
app.mainloop()
opt = tk.OptionMenu(app, variable, *OptionList)
app
ist der Elternteil des erstellten Optionsmenüs,
variabel
ist die anfängliche Textvariable, die den Typ tk.StringVar
hat.
*OptionList
sind die anderen Menüpunkte. *
wird zum Auspacken des Containers verwendet, wie hier List
.
Befehl an das Optionsmenü binden, wenn sich der Wert ändert
OptionMenu
konnte keinen Befehl verknüpfen, wenn ein neuer Wert aus der Optionsliste ausgewählt wurde. Sie könnten nicht einfach eine Callback-Funktion wie Button-Widget damit verknüpfen.
tk.Button(app, text="Increase", width=30, command=change_label_number)
Sie müssen eine Trace-Methode verwenden, um observer
-Callbacks an die OptionMenu
-Variable anzuhängen. Jedes Mal, wenn sich die Variable ändert, löst sie die Callback-Funktionen aus.
OptionMenu
Callback Beispiel
import tkinter as tk
OptionList = ["Aries", "Taurus", "Gemini", "Cancer"]
app = tk.Tk()
app.geometry("100x200")
variable = tk.StringVar(app)
variable.set(OptionList[0])
opt = tk.OptionMenu(app, variable, *OptionList)
opt.config(width=90, font=("Helvetica", 12))
opt.pack(side="top")
labelTest = tk.Label(text="", font=("Helvetica", 12), fg="red")
labelTest.pack(side="top")
def callback(*args):
labelTest.configure(text="The selected item is {}".format(variable.get()))
variable.trace("w", callback)
app.mainloop()
Der Trace-“Beobachter” hat drei Modi,
Beobachter-Modus | Erläuterung |
---|---|
w |
wenn variable von jemandem geschrieben wird. |
r |
wenn jemand die variable liest. |
u |
wenn die variable gelöscht wird |
Dann bedeutet variable.trace("w", callback)
, dass die callback
Funktion aufgerufen wird, wenn die Variable
geschrieben oder vom Benutzer ausgewählt wird.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook