GUI Programming

Création de menus déroulants dynamiques avec Tkinter

Spread the love

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

  1. Créer un menu déroulant basique
  2. Répondre aux changements de sélection

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *