Hoe maak je een vervolgkeuzemenu in Tkinter

Het heeft enkele methoden om een vervolgkeuzemenu in Tkinter te maken.
- Gebruik Combobox zoals geïntroduceerd in het hoofdstuk Combobox van de Tkinter tutorial.
- Gebruik OptionMenu Widget.
Het OptionMenu is een beetje vergelijkbaar met de Combobox-widget, maar is al opgenomen in de Tkinter zelf, daarom hoeft u ttk niet te importeren zoals in het geval van Combobox
.
Tkinter- OptionMenu
voorbeeld
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
is de ouder van het gemaakte optiemenu,
variable
is de initiële tekstvariabele die tk.StringVar
type heeft.
*OptionList
is de andere menu-opties. *
wordt gebruikt voor het uitpakken van de container, hier als list
type.
Bind opdracht aan OptionMenu wanneer waarde verandert
OptionMenu
kon een opdracht niet koppelen wanneer een nieuwe waarde is geselecteerd in de optielijst. Je kon niet zomaar koppelen van een callback functie om het als knopwidget
tk.Button(app, text="Increase", width=30, command=change_label_number)
U moet een traceermethode gebruiken om observer
callbacks aan de OptionMenu
variabele te koppelen . Telkens wanneer de variabele verandert, worden de callback-functies geactiveerd.
OptionMenu
Terugbelvoorbeeld
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()
De trace observer
heeft drie modi,
waarnemersmodus | Uitleg |
---|---|
w |
wanneer variable is geschreven door iemand |
r |
wanneer variable wordt gelezen door iemand |
u |
wanneer variable wordt verwijderd |
Dit variable.trace("w", callback)
betekent dan dat het de callback
functie aanroept wanneer het variable
door de gebruiker is geschreven of geselecteerd.
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