1. Cases à cocher (Checkbutton)
Une case à cocher est un bouton carré qui peut être activé ou désactivé. Elle est utile lorsque vous devez offrir à l'utilisateur le choix d'un ou plusieurs paramètres parmi ceux proposés.
Créer une case à cocher
Pour créer une case à cocher, utilisez le widget Checkbutton. Pour suivre l'état de la case (cochée ou non), on utilise généralement une variable de type IntVar qui stocke la valeur 1 si la case est cochée et 0 si elle ne l'est pas.
import tkinter as tk
# Fonction pour vérifier l'état de la case à cocher
def show_status():
print("Activé" if var.get() == 1 else "Désactivé")
# Création de la fenêtre principale
root = tk.Tk()
root.title("Exemple avec une case à cocher")
# Variable pour stocker l'état
var = tk.IntVar()
# Case à cocher liée à la variable var
checkbox = tk.Checkbutton(root, text="Activer l'option", variable=var, command=show_status)
checkbox.pack(pady=20)
root.mainloop()
Explication du code
-
variable=var: Lie la case à cocher à la variablevar, qui est mise à jour chaque fois que l'état de la case change. - Fonction
show_status(): Affiche dans la console l'état actuel de la case. Si la case est cochée, "Activé" s'affiche, sinon "Désactivé".
Utilisation de plusieurs cases à cocher
Si vous avez besoin de plusieurs options indépendantes, vous pouvez créer plusieurs cases à cocher, chacune liée à sa propre variable.
# Variables pour stocker les états
option1 = tk.IntVar()
option2 = tk.IntVar()
# Cases à cocher
check1 = tk.Checkbutton(root, text="Option 1", variable=option1)
check2 = tk.Checkbutton(root, text="Option 2", variable=option2)
check1.pack()
check2.pack()
2. Boutons radio (Radiobutton)
Les boutons radio sont des boutons ronds à partir desquels l'utilisateur peut sélectionner une seule option. Ils sont utiles lorsque vous devez permettre à l'utilisateur de choisir une option parmi plusieurs.
Créer des boutons radio
Pour créer des boutons radio, utilisez le widget Radiobutton. Pour lier les boutons radio et les rendre interconnectés, ils doivent tous être liés à une seule variable (IntVar ou StringVar).
# Fonction pour afficher l'option sélectionnée
def show_choice():
print(f"Option sélectionnée {choice.get()}")
# Variable pour suivre le choix
choice = tk.IntVar()
# Boutons radio
radio1 = tk.Radiobutton(root, text="Option 1", variable=choice, value=1, command=show_choice)
radio2 = tk.Radiobutton(root, text="Option 2", variable=choice, value=2, command=show_choice)
radio3 = tk.Radiobutton(root, text="Option 3", variable=choice, value=3, command=show_choice)
radio1.pack()
radio2.pack()
radio3.pack()
Explication du code
-
variable=choice: Lie tous les boutons radio à une seule variablechoicepour les rendre interconnectés. -
value: Définit la valeur que la variablechoiceprendra si cet élément est sélectionné. - Fonction
show_choice(): Affiche dans la console l'option sélectionnée.
Boutons radio avec des valeurs textuelles
Vous pouvez également lier les boutons radio à une variable de type StringVar et utiliser des valeurs textuelles.
# Variable pour choisir un texte
color_choice = tk.StringVar()
# Boutons radio avec des valeurs textuelles
radio_red = tk.Radiobutton(root, text="Rouge", variable=color_choice, value="Rouge")
radio_blue = tk.Radiobutton(root, text="Bleu", variable=color_choice, value="Bleu")
radio_green = tk.Radiobutton(root, text="Vert", variable=color_choice, value="Vert")
radio_red.pack()
radio_blue.pack()
radio_green.pack()
3. Spinbox (Spinbox)
Un Spinbox permet à l'utilisateur de sélectionner une valeur numérique dans une plage. Ce widget est utile pour entrer des données numériques comme l'âge ou une quantité.
Créer un Spinbox
Dans Tkinter, un Spinbox est créé avec le widget Spinbox, qui permet à l'utilisateur d'entrer une valeur manuellement ou de la sélectionner à l'aide des flèches.
# Fonction pour afficher la valeur sélectionnée
def show_spin_value():
print(f"Valeur: {spin.get()}")
# Spinbox de 1 à 10
spin = tk.Spinbox(root, from_=1, to=10, command=show_spin_value)
spin.pack(pady=20)
Explication du code
from_etto: Définissent la plage de valeurs pour le Spinbox.- Fonction
show_spin_value(): Affiche la valeur sélectionnée dans la console à chaque modification.
Personnaliser l'incrément et les valeurs
Le paramètre increment permet de définir l'incrément du Spinbox, et values permet d'indiquer des valeurs spécifiques.
# Spinbox avec un incrément de 2
spin_step = tk.Spinbox(root, from_=0, to=20, increment=2)
spin_step.pack(pady=5)
# Spinbox avec des valeurs spécifiques
spin_values = tk.Spinbox(root, values=("Petit", "Moyen", "Grand"))
spin_values.pack(pady=5)
4. Exemple d'application
Exemple d'application avec des cases à cocher, des boutons radio et des Spinbox
Maintenant, rassemblons tout et créons une interface avec des cases à cocher, des boutons radio et des Spinbox, permettant à l'utilisateur de sélectionner plusieurs options et de visualiser le résultat.
import tkinter as tk
# Création de la fenêtre principale
root = tk.Tk()
root.title("Exemple avec cases, radio et Spinbox")
root.geometry("300x300")
# Fonction pour afficher les sélections
def show_selections():
selections = []
selections.append(f"Case cochée: {'Oui' if option.get() == 1 else 'Non'}")
selections.append(f"Couleur sélectionnée: {color_choice.get()}")
selections.append(f"Quantité: {spin.get()}")
message_label.config(text="\n".join(selections))
# Case à cocher
option = tk.IntVar()
checkbox = tk.Checkbutton(root, text="Activer l'option", variable=option)
checkbox.pack(pady=5)
# Boutons radio
color_choice = tk.StringVar(value="Rouge")
tk.Label(root, text="Choisissez une couleur:").pack()
radio_red = tk.Radiobutton(root, text="Rouge", variable=color_choice, value="Rouge")
radio_blue = tk.Radiobutton(root, text="Bleu", variable=color_choice, value="Bleu")
radio_green = tk.Radiobutton(root, text="Vert", variable=color_choice, value="Vert")
radio_red.pack()
radio_blue.pack()
radio_green.pack()
# Spinbox
tk.Label(root, text="Quantité:").pack()
spin = tk.Spinbox(root, from_=1, to=10)
spin.pack(pady=5)
# Bouton pour afficher les sélections
show_button = tk.Button(root, text="Afficher les sélections", command=show_selections)
show_button.pack(pady=10)
# Label pour afficher les résultats
message_label = tk.Label(root, text="", justify="left")
message_label.pack(pady=5)
root.mainloop()
Explication de l'exemple complet
- Case à cocher: Indique si l'option "Activer l'option" est cochée.
- Boutons radio: Permettent de choisir une couleur parmi trois.
- Spinbox: Permet de choisir une quantité de 1 à 10.
- Bouton "Afficher les sélections": Affiche l'état actuel de tous les widgets dans le label
message_label.
GO TO FULL VERSION