Programmation événementielle avec tkinter
Programmation événementielle avec tkinter
-
Objectifs
- Connaitre les les méthodes de positionnement pack(), grid() et place()
- Etre capable de disposer les widgets Tkinter avec les méthodes pack(), grid() et place().
-
Introduction
- Programmer un GUI (Graphic User Interface) est différent de la programmation sous console.
- Pour un programme console, on affiche du texte avec des
print
et on attend l’entrée de l’utilisateur avec desinput
. Le code bloque tant que l’utilisateur n’a pas enfoncé la toucheEntrée
. - Maintenant que l’on sait construire l’interface graphique, c’est-à-dire placer les composants dans la fenêtre, on va voir comment définir l’interaction avec l’utilisateur.
- Dans une application GUI, l’interface graphique qui comprend divers widgets (tels que boutons, menus, entrées de texte, …) apparaît à l’utilisateur et le programme attend que l’utilisateur interagisse au travers d’une action. On appelle cette action un
événement
. - Un
événement
est la survenue de quelque chose dans votre application – par exemple, l’utilisateur appuie sur une touche, clique avec sa souris ou la déplace. Votre application à certainement besoin de réagir à ces actions de l’utilisateur. - Parmi les événements les plus communs, on peut citer :
- Un clic sur un bouton de la souris
- Le déplacement de la souris
- L’appui ou le relâchement d’une touche du clavier
- Un clic sur la croix de fermeture de la fenêtre principale
-
phases principales d’exécution
- Tous les programmes d’ordinateur comportent grosso-modo trois phases principales :
- une phase d’initialisation, laquelle contient les instructions qui préparent le travail à effectuer (appel des modules externes nécessaires, ouverture de fichiers, connexion à un serveur de bases de données ou à l’Internet, etc.).
- une phase centrale où l’on trouve la véritable fonctionnalité du programme (c’est-à-dire tout ce qu’il est censé faire : afficher des données à l’écran, effectuer des calculs, modifier le contenu d’un fichier, imprimer, etc.).
- Dans le cas d’un programme qui utilise une interface graphique, par contre, l’organisation interne est différente. On dit d’un tel programme qu’il est piloté par les événements.
- Après sa phase d’initialisation, un programme de ce type se met en quelque sorte « en attente », et passe la main à un autre logiciel, lequel est plus ou moins intimement intégré au système d’exploitation de l’ordinateur et « tourne » en permanence.
- Ce réceptionnaire d’événements scrute sans cesse tous les périphériques (clavier, souris, horloge, modem, etc.) et réagit immédiatement lorsqu’un événement y est détecté.
- Lorsqu’il détecte un événement, le réceptionnaire envoie un message spécifique au programme(41), lequel doit être conçu pour réagir en conséquence.
-
lier un gestionnaire à un événement
-
Définitions des termes utilisés
Evénement (event)
: est la survenue d’une action (clavier, souris) dont votre application a besoin d’être informée.Gestionnaire d’événement (event handler)
: est une fonction de votre application qui est exécuté lorsqu’un événement se produit sur un widget.- Liaison widget-événement-gestionnaire d’événement : consiste à spécifier la fonction à exécuter lorsque l’événement se produit sur le widget.
-
Niveaux de liaisons
- Vous pouvez lier un gestionnaire à un événement à l’un de ces trois niveaux:
-
Premier niveau
- Liaison au niveau d’un widget : Il est possible de lier un gestionnaire d’événement à un événement sur un widget particulier en utilisant sa méthode
bind()
. - La syntaxe :
-
Deuxième niveau
- Liaison au niveau d’une classe : Vous pouvez lier un événement à tous les widgets d’une classe donnée en utilisant la méthode
bind_class()
. - La syntaxe :
-
Troisième niveau
- Liaison au niveau de l’application : Vous pouvez définir une liaison d’événement de telle sorte que le gestionnaire d’événement soit appelé indépendamment du widget qui a le focus ou qui se trouve sous la souris. Pour ce faire appeler la méthode
bind_all()
sur n’importe quel widget - La syntaxe :
une phase de terminaison qui sert à clôturer « proprement » les opérations (c’est-à-dire fermer les fichiers restés ouverts, couper les connexions externes, etc.).