Wie man ein Dropdown-Menü in Tkinter erstellt

Jinku Hu 30 Januar 2023
  1. Tkinter OptionMenu Beispiel
  2. Befehl an das Optionsmenü binden, wenn sich der Wert ändert
Wie man ein Dropdown-Menü in Tkinter erstellt

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

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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