Le widget OptionMenu
de Tkinter offre un moyen simple mais efficace de créer des menus déroulants dans vos applications GUI Python. Ce guide explique comment créer des menus déroulants basiques et les améliorer avec des fonctionnalités déclenchées par les changements de sélection de l’utilisateur.
Table des matières
Créer un menu déroulant basique
La base d’un menu déroulant Tkinter est le widget ttk.OptionMenu
. Cet exemple montre son implémentation de base :
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("Menu déroulant Tkinter basique")
selected_option = tk.StringVar(root)
selected_option.set("Option 1") # Valeur par défaut
options = ["Option 1", "Option 2", "Option 3"]
option_menu = ttk.OptionMenu(root, selected_option, *options)
option_menu.pack(pady=20)
root.mainloop()
Ce code crée une fenêtre, initialise une StringVar
pour stocker l’option sélectionnée, définit une liste d’options et utilise ttk.OptionMenu
pour créer le menu déroulant. *options
déballe la liste, fournissant chaque option comme argument séparé à OptionMenu
. La valeur sélectionnée est automatiquement mise à jour dans selected_option
.
Répondre aux changements de sélection
Pour ajouter de l’interactivité, nous pouvons exécuter du code chaque fois que l’utilisateur sélectionne une option différente. Ceci se fait en utilisant la méthode trace
de la StringVar
:
import tkinter as tk
from tkinter import ttk
def option_changed(new_value):
print(f"Option sélectionnée : {new_value}")
# Ajoutez vos actions personnalisées ici, par exemple, mettez à jour d'autres widgets,
# faites des requêtes réseau, etc.
root = tk.Tk()
root.title("Menu déroulant Tkinter interactif")
selected_option = tk.StringVar(root)
selected_option.set("Option 1")
options = ["Option 1", "Option 2", "Option 3"]
option_menu = ttk.OptionMenu(root, selected_option, *options)
option_menu.pack(pady=20)
selected_option.trace("w", lambda *args: option_changed(selected_option.get()))
root.mainloop()
La fonction option_changed
est appelée chaque fois que la variable selected_option
change. La méthode trace("w", ...)
enregistre cette fonction pour qu’elle soit appelée lorsque la variable est écrite. La fonction lambda garantit que la valeur actuelle est passée à option_changed
. Remplacez l’instruction print
par la logique de votre application.
Cette approche crée un menu déroulant dynamique et réactif, améliorant l’interaction utilisateur et les fonctionnalités de l’application.