Le widget ttk.Combobox
dans Tkinter offre un moyen pratique de créer des menus déroulants dans vos applications GUI Python. Ce tutoriel vous guidera à travers ses principales caractéristiques et fonctionnalités, en fournissant des exemples pratiques pour vous aider à intégrer efficacement les boîtes de combinaison dans vos projets.
Table des matières :
- Exemple de Combobox de base
- Personnalisation de l’apparence : polices et styles
- Gestion des événements et interaction utilisateur
- Mise à jour dynamique des valeurs de la Combobox
- Création de Combobox en lecture seule
1. Exemple de Combobox de base
Commençons par un exemple simple pour illustrer la création et l’utilisation d’un ttk.Combobox
:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("Exemple de Combobox")
combo = ttk.Combobox(root, values=["Option 1", "Option 2", "Option 3"])
combo.pack(pady=20)
combo.current(0) # Définit la valeur par défaut sur "Option 1"
root.mainloop()
Ce code crée une fenêtre principale, ajoute une boîte de combinaison avec trois options prédéfinies et définit la sélection par défaut sur « Option 1 ». N’oubliez pas d’importer à la fois tkinter
et ttk
.
2. Personnalisation de l’apparence : polices et styles
Vous pouvez personnaliser l’apparence de la boîte de combinaison, telle que sa police :
import tkinter as tk
from tkinter import ttk
import tkinter.font as tkFont
root = tk.Tk()
root.title("Exemple de style de Combobox")
myFont = tkFont.Font(family="Helvetica", size=12, weight="bold")
combo = ttk.Combobox(root, values=["Option A", "Option B", "Option C"], font=myFont)
combo.pack(pady=20)
combo.current(0)
root.mainloop()
Cet exemple montre comment créer une police personnalisée et l’appliquer à la boîte de combinaison. Expérimentez avec différentes familles de polices, tailles et poids pour obtenir l’apparence souhaitée.
3. Gestion des événements et interaction utilisateur
Pour répondre aux sélections de l’utilisateur, liez des événements à la boîte de combinaison. L’événement <<ComboboxSelected>>
est déclenché lorsqu’un utilisateur sélectionne un élément :
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("Gestion des événements de Combobox")
def combo_selected(event):
selected_item = combo.get()
print(f"Élément sélectionné : {selected_item}")
combo = ttk.Combobox(root, values=["Option 1", "Option 2", "Option 3"])
combo.pack(pady=20)
combo.current(0)
combo.bind("<<ComboboxSelected>>", combo_selected)
root.mainloop()
Ce code définit une fonction combo_selected
qui affiche l’élément sélectionné. La méthode bind
connecte cette fonction à l’événement <<ComboboxSelected>>
.
4. Mise à jour dynamique des valeurs de la Combobox
Vous pouvez mettre à jour les options de la boîte de combinaison dynamiquement au moment de l’exécution :
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("Combobox dynamique")
combo = ttk.Combobox(root)
combo.pack(pady=20)
def update_combo():
new_values = ["Nouvelle option 1", "Nouvelle option 2", "Nouvelle option 3"]
combo["values"] = new_values
button = tk.Button(root, text="Mettre à jour la Combobox", command=update_combo)
button.pack()
root.mainloop()
Un bouton déclenche la fonction update_combo
, qui modifie l’attribut values
de la boîte de combinaison.
5. Création de Combobox en lecture seule
Pour rendre la boîte de combinaison en lecture seule (empêcher la saisie directe de texte), utilisez l’option state
:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("Combobox en lecture seule")
combo = ttk.Combobox(root, values=["Option 1", "Option 2", "Option 3"], state="readonly")
combo.pack(pady=20)
combo.current(0)
root.mainloop()
La définition de state="readonly"
désactive la saisie directe de texte, ne permettant que la sélection dans le menu déroulant.