Comment créer un menu déroulant dans Tkinter
Il a quelques méthodes pour créer un menu déroulant dans Tkinter.
- Utilisez Combobox comme présenté dans le chapitre Tkinter tutorial Combobox.
- Utilisez OptionMenu Widget.
Le menu option est un peu similaire au widget Combobox mais est déjà inclus dans le Tkinter lui-même, donc, vous n’avez pas besoin d’importer ttk comme dans le cas de Combobox
.
Tkinter OptionMenu
Exemple
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
est le parent du menu d’option créé,
variable
est la variable texte initiale qui a le type tk.StringVar
.
*OptionList
est l’autre option du menu. *
est utilisé pour décompresser le conteneur, comme list
type ici.
Lier la commande à OptionMenu lorsque la valeur change
Le OptionMenu
ne pouvait pas lier une commande quand une nouvelle valeur est sélectionnée dans la liste des options. Vous ne pourriez pas simplement lier une fonction de rappel à cette commande comme button widget
tk.Button(app, text="Increase", width=30, command=change_label_number)
Vous devez utiliser une méthode de trace pour attacher les callbacks observer
à la variable OptionMenu
. Chaque fois que la variable change, elle déclenche les fonctions de rappel.
Exemple de rappel de la variable OptionMenu
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()
La trace observer
a trois modes,
mode observateur | Explication |
---|---|
w |
quand variable est écrit par quelqu’un |
r |
quand variable est lu par quelqu’un |
u |
quand la variable est supprimée |
Ensuite, variable.trace("w", callback)
signifie qu’il appellera la fonction callback
quand variable
est écrite ou sélectionnée par l’utilisateur.
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