Programmation: syntaxe, algorithmique et structures de données
Navigation
8. Interfaces graphiques
Résumé
Jusqu’à présent, nous avons utilisé Python exclusivement «en mode
texte». Nous avons procédé ainsi parce qu’il nous fallait absolument
d’abord dégager un certain nombre de concepts élémentaires ainsi que la
structure de base du langage, avant d’envisager des expériences
impliquant des objets informatiques plus élaborés (fenêtres, images,
sons, etc.). Nous pouvons maintenant nous permettre une petite
incursion dans le vaste domaine des interfaces graphiques en utilisant notamment les concepts mis en place dans le chapitre précédent
Interfaces graphiques Tkinter
Objectifs du chapitre
Au terme de ce chapitre, chaque étudiant devra être capable de:
instancier un nouvel objet à partir d'une des
classes de base provenant du module tkinter en lui fournissant
les arguments attendus;
énumérer et exécuter les méthodes d'un objet
tkinter en se basant sur l'une des références
en ligne;
positionner et aligner de nouveaux widgets dans un widget
préexistant à l'aide des méthodes pack et
grid;
dessiner différentes formes géométriques élémentaires dans un
canevas (ligne, rectangle, oval,...);
positionner une image dans un canevas;
expliquer la principale différence entre le système
d'axes orthonormé ordinaire et le système
d'axes de coordonnées d'un canevas ;
utiliser de manière pertinente la composition
d'instructions pour écrire un code plus compact et
supprimer les variables inutiles;
indiquer les phases principales d'un programme
textuel et un programme piloté par des
événements;
illustrer l'échange d'informations entre classes par l'intermédiaire de leurs méthodes;
lier un événement à un objet et à un gestionnaire à
l'aide de la méthode bind ou de
l'argument command;
utiliser une fonction lambda anonyme permettant de passer à l'argument command d'un widget un gestionnaire d'événements avec paramètre;
lire les coordonnées courantes (x;y) du pointeur piloté par la
souris;
détecter si l'utilisateur a cliqué à
l'intérieur d'un objet situé dans un
canevas;
modifier les principales propriétés d'une forme géométrique à l'aide des méthodes Canvas.configure, Canvas.itemconfig et Canvas.coords;
récupérer et évaluer le résultat d'une expression transmise
par l'utilisateur via une zone de saisie de texte;
associer une valeur à un bouton radio à l'aide d'une variable StringVar ou IntVar;
récupérer la valeur associée à un bouton radio lorsque ce dernier est sélectionné;
paramétrer et récupérer la valeur associée à un curseur de type Scale;
gérer des fenêtres satellites d'une fenêtre principale à l'aide de la classe Toplevel;
transmettre les arguments d'une méthode par paramétrage implicite;
générer l'animation d'un objet
situé dans un canevas suivant un itinéraire linéaire de manière
continue ou pilotée par l'utilisateur à
l'aide de différents boutons;
s'assurer qu'un objet ne puisse
pas sortir du cadre du canevas lors de son animation ;
adapter les instructions motrices d'une animation
en y intégrant des variables contenant la vitesse de déplacement
horizontal et vertical;
expliquer chacun des termes informatiques apparaissant dans le
glossaire du chapitre.
Pour chacun des exercices du cours, les corrigés ci-dessous doivent permettre à l'élève d'observer le résultat à obtenir (double-clic sur le fichier test) et de vérifier/comparer sa résolution avec une solution possible (éditer le fichier solution):