Wie man ein Dropdown-Menü in Tkinter erstellt

  1. Tkinter OptionMenu Beispiel
  2. Befehl an das Optionsmenü binden, wenn sich der Wert ändert

Es hat einige Methoden, um ein Dropdown-Menü in Tkinter zu erstellen.

  1. Verwenden Sie Combobox, wie im Kapitel Tkinter tutorial Combobox eingeführt.
  2. 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.

Tkinter OptionMenu Beispiel

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.

Tkinter OptionMenu Rückruf

comments powered by Disqus