Les interfaces graphiques nécessitent des interactions dynamiques pour répondre aux actions des utilisateurs.
Sans gestion efficace des événements, les applications peuvent sembler statiques et peu réactives, frustrant les utilisateurs.
Tkinter offre des outils puissants pour capturer et réagir aux événements, rendant les applications interactives et engageantes.
Créez des interfaces graphiques interactives avec Python et TKinter !

Gestion des événements Tkinter
Les événements dans une interface graphique sont des actions déclenchées par l’utilisateur ou par le système. Ces actions peuvent être diverses, comme l’appui sur une touche du clavier, un clic de souris, ou encore une interaction avec un widget (bouton, menu déroulant, etc.). Tkinter, la bibliothèque standard pour les interfaces graphiques en Python, permet de capturer ces événements et d’y réagir via des callbacks (fonctions associées à un événement particulier).
Dans ce chapitre, nous explorerons plusieurs types d’événements et la manière dont vous pouvez les utiliser pour enrichir l’interactivité de vos applications graphiques. Voici les différents types à voir :
Méthode bind dans Tkinter
La méthode bind dans Tkinter permet d’associer un événement spécifique à une fonction de rappel (callback), ce qui signifie qu’une action sera exécutée chaque fois que cet événement se produit.
Cela est particulièrement utile pour gérer des interactions utilisateur comme des clics de souris, des touches de clavier, ou même des événements plus spécifiques liés aux widgets. Voici la syntaxe de la Méthode bind :
widget.bind("<événement>", fonction)
Avec :
- widget :Le widget auquel l’événement sera associé (par exemple,rootpour la fenêtre principale, ouCanvaspour un élément graphique).
- <événement> :Le type d’événement à détecter, encadré par des chevrons. Par exemple,<Button-1>pour un clic gauche de la souris,<KeyPress-Right>pour la touche de direction droite, ou<Enter>pour le passage de la souris au-dessus du widget.
- fonction :La fonction de rappel (callback) qui sera appelée lorsque l’événement se produira. Cette fonction peut prendre un paramètreeventpour obtenir des informations détaillées sur l’événement déclenché.
Événements clavier avec Tkinter
Les événements clavier permettent à votre application de capturer les actions de l’utilisateur lorsqu’il interagit avec son clavier. Par exemple, vous pouvez détecter lorsque l’utilisateur appuie sur une touche spécifique, relâche une touche,
ou utilise une combinaison de touches comme un raccourci clavier. Voici les principaux événements que nous allons voir :
Avec :
- KeyPress :Déclenché lorsqu’une touche est pressée.
- KeyRelease :Déclenché lorsqu’une touche est relâchée.
- Combinaison de touches :Par exemple, des raccourcis comme Ctrl+S.
- Mouvement d’éléments :Utilisation des touches directionnelles pour déplacer des objets dans un Canvas.
Événement KeyPress
L’événement KeyPress permet de détecter la pression d’une touche. Voici un exemple simple où nous capturons la touche pressée et l’affichons dans la console :
from tkinter import *
root=Tk()
defpress(event):
print("Touche pressée :", event.keysym)
root.bind("", press)
root.mainloop()
Après avoir exécuté ce code, et cliquez sur la fenêtre Tkinter pour lui donner le focus. , on appuie sur une touche (par exemple a ou p) on va observez que la touche pressée s’affichera dans la console. Comme il est montré dans la figure suivant :
Cet événement est utile pour des actions nécessitant la détection des touches ou pour la création de raccourcis clavier.
Événement KeyRelease
L’événement KeyRelease permet de capturer le moment où une touche est relâchée. Voici un exemple qui affiche la touche relâchée :
from tkinter import *
root=Tk()
defrelease(event):
print("Touche relâchée :", event.keysym)
root.bind("", release)
root.mainloop()
Comme pour l’événement KeyPress, après exécution du script, on appuie puis on relâche une touche, celle-ci s’affiche dans la console comme il est montré dans la figure suivante:
Événement de combinaison de touches : Ctrl+S
Cet exemple va vous montrez comment gérer des raccourcis clavier en utilisant plusieurs touches, comme Ctrl+S pour enregistrer un fichier :
from tkinter import *
root=Tk()
defsave_shortcut(event):
print("Raccourci Ctrl+S activé")
root.quit()
root.bind("", save_shortcut)
root.mainloop()
En appuyant sur la combinaison Ctrl+S , l’événement est déclenché et le message « Raccourci Ctrl+S activé » s’affiche dans la console, puis la fenêtre se ferme. Voici un exemple d’exécution de ce programme :
Ce genre d’événement est pratique pour implémenter des actions globales dans une application (enregistrer, ouvrir un fichier, etc.).
Mouvement d’un élément avec les touches directionnelles
Vous pouvez également utiliser les touches directionnelles pour déplacer des objets graphiques dans un Canvas. Voici un exemple simple où un carré rouge se déplace vers la gauche lorsque vous appuyez sur la touche ← :
from tkinter import *
root=Tk()
canvas = Canvas(root,bg="white")
canvas.pack(fill=BOTH,expand=True)
carre = canvas.create_rectangle(400, 300, 450, 350,fill="red")
defmove_left(event):
canvas.move(carre, -10, 0)
root.bind("", move_left)
root.mainloop()
Ce code crée un carré rouge que vous pouvez déplacer vers la gauche en appuyant sur la touche ←. Voici la fenêtre apparu après l’exécution de ce code :
Vous pouvez étendre ce code pour ajouter le mouvement dans toutes les directions en utilisant les touches ↑, ↓, et →.
Déplacer un carré : touches Tkinter
Cet exemple montre comment capturer les événements clavier pour déplacer un objet (un carré) dans un Canvas à l’aide des touches directionnelles (←, →, ↑, ↓).
from tkinter import *
# Initialisation de la fenêtre principale
root = Tk()
root.title("Mon application")
root.geometry('800x600+600+200')
# Création d'un Canvas avec un fond vert
canvas = Canvas(root,bg="green")
canvas.pack(fill=BOTH,expand=True)
# Création d'un carré rouge dans le Canvas
carre = canvas.create_rectangle(400, 300, 450, 350,fill="red")
x = 0
y = 0
# Fonction pour gérer le mouvement du carré
defmove(event):
global x, y
if event.keysym == "Left":
x = -5
y = 0
elif event.keysym == "Right":
x = 5
y = 0
elif event.keysym == "Up":
x = 0
y = -5
elif event.keysym == "Down":
x = 0
y = 5
canvas.move(carre, x, y)
# Liaison des touches directionnelles aux mouvements du carré
for key in ["", "", "", ""]:
root.bind(key, move)
# Exécution de la boucle principale de Tkinter
root.mainloop()
Dans cet exemple, nous créons une interface graphique en utilisant Tkinter pour illustrer l’interaction clavier avec un objet graphique. Tout d’abord, une fenêtre principale est configurée avec une taille de 800×600 pixels, centrée sur l’écran à l’aide de la méthode geometry() . Cette fenêtre contient un Canvas avec un fond vert qui sert de zone de dessin où les objets graphiques peuvent être placés et déplacés. Un carré rouge est initialement dessiné dans le Canvas, positionné aux coordonnées (400, 300, 450, 350).
Pour permettre le mouvement de ce carré, une fonction move() est définie. Cette fonction ajuste les variables x et y en fonction de la touche directionnelle pressée : si l’utilisateur appuie sur la flèche gauche, le carré se déplace de 5 pixels vers la gauche ; la flèche droite le déplace de 5 pixels vers la droite ; les flèches haut et bas ajustent respectivement le mouvement vertical. Les touches directionnelles sont liées à la fonction move() en utilisant root.bind() , de sorte que chaque fois qu’une de ces touches est pressée, la fonction est appelée, et le carré se déplace en conséquence. Enfin, la méthode root.mainloop() lance la boucle principale de Tkinter, maintenant la fenêtre ouverte et écoutant les événements jusqu’à ce que l’utilisateur la ferme.
Voici le résultat d’exécution de ce code :
Cet exemple montre comment utiliser les événements clavier dans Tkinter pour interagir avec des objets graphiques dans un Canvas . Il peut être facilement étendu pour ajouter d’autres interactions graphiques ou pour utiliser différents types d’événements, offrant une grande flexibilité pour la création d’interfaces utilisateur interactives.
Conclusion sur Tkinter et Python GUI
La gestion des événements dans Tkinter vous permet de rendre vos applications interactives et dynamiques. Que vous capturiez des pressions de touches, des clics de souris, ou que vous utilisiez des minuteries, les événements sont au cœur de l’interaction utilisateur. Les exemples présentés ici sont une introduction aux possibilités offertes par Tkinter, que vous pouvez enrichir et adapter à vos besoins spécifiques.
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Comment gérer les événements dans Tkinter ?
Qu'est-ce que la méthode bind dans Tkinter ?
Comment capturer les événements clavier en Tkinter ?
Comment utiliser les touches directionnelles pour déplacer des objets dans Tkinter ?
Quel est un exemple d'utilisation des événements pour une interface interactive en Tkinter ?
Conclusion
La gestion des événements dans Tkinter enrichit considérablement l’interactivité de vos applications Python. Quels autres types d’interactions pourrait-on explorer pour améliorer encore plus l’expérience utilisateur ?