Comment créer un menu déroulant dans Tkinter

Jinku Hu 30 janvier 2023
  1. Tkinter OptionMenu Exemple
  2. Lier la commande à OptionMenu lorsque la valeur change
Comment créer un menu déroulant dans Tkinter

Il a quelques méthodes pour créer un menu déroulant dans Tkinter.

  1. Utilisez Combobox comme présenté dans le chapitre Tkinter tutorial Combobox.
  2. 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.

Exemple Tkinter OptionMenu

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.

Tkinter OptionMenu Callback

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