Hoe maak je een vervolgkeuzemenu in Tkinter

Jinku Hu 30 januari 2023 20 december 2019
  1. Tkinter- OptionMenu voorbeeld
  2. Bind opdracht aan OptionMenu wanneer waarde verandert
Hoe maak je een vervolgkeuzemenu in Tkinter

Het heeft enkele methoden om een ​​vervolgkeuzemenu in Tkinter te maken.

  1. Gebruik Combobox zoals geïntroduceerd in het hoofdstuk Combobox van de Tkinter tutorial.
  2. 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.

Tkinter OptionMenu Voorbeeld

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.

Tkinter Optie Menu Terugbellen

Author: 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