Variables Tkinter
Les widgets comme Entry
, Checkbutton
, Radiobutton
et Label
peuvent être
liés à une variable spéciale. Cette variable peut suivre automatiquement les changements
de valeurs en temps réel. Cela permet de créer des interfaces utilisateur plus dynamiques et
réactives. Il est aussi possible de lier plusieurs widgets à la même variable.
Voici un exemple avec StringVar
et Entry
.
import tkinter as tk
root = tk.Tk()
nom_var = tk.StringVar()
tk.Label(root, text="Votre nom :").pack()
tk.Entry(root, textvariable=nom_var).pack()
def afficher_nom():
print("Nom saisi :", nom_var.get())
tk.Button(root, text="Afficher", command=afficher_nom).pack()
root.mainloop()
Voici un exemple avec IntVar
et Radiobutton
. Notez que chaque Radiobutton
a une valeur différente qui lui est associée avec le paramètre value
.
import tkinter as tk
root = tk.Tk()
mon_pokemon = tk.IntVar(value=1) # Valeur par défaut
tk.Label(root, text="Choisissez votre Pokemon préféré :").pack()
tk.Radiobutton(root, text="Pikachu", variable=mon_pokemon, value=1).pack()
tk.Radiobutton(root, text="Charizard", variable=mon_pokemon, value=2).pack()
tk.Radiobutton(root, text="Autre", variable=mon_pokemon, value=3).pack()
def afficher_mon_pokemon():
print("Valeur sélectionnée :", mon_pokemon.get())
tk.Button(root, text="Soumettre", command=afficher_mon_pokemon).pack()
root.mainloop()
Voici un autre exmple avec BooleanVar
et Checkbutton
import tkinter as tk
root = tk.Tk()
aime_python = tk.BooleanVar()
tk.Checkbutton(root, text="J’aime Python 🐍", variable=aime_python).pack()
def valider():
if aime_python.get():
print("Excellent choix.")
else:
print("Vous manquez quelque chose !")
tk.Button(root, text="Valider", command=valider).pack()
root.mainloop()
Finalement, voici un dernier exemple avec StringVar
et Label
. Cet exemple
illustre comment plusieurs widgets peuvent être liés à la même variable.
import tkinter as tk
root = tk.Tk()
msg = tk.StringVar(value="Bonjour !")
entry = tk.Entry(root, textvariable=msg)
entry.pack()
label = tk.Label(root, textvariable=msg)
label.pack()
root.mainloop()
🤔 Testez votre compréhension
- Q1
- Q2
Pourquoi utiliser un Frame
au lieu de tout mettre dans root
Quel type de variable Tkinter utiliseriez-vous pour un Checkbutton
?