Im FR Pyt TK 1
Im FR Pyt TK 1
Im FR Pyt TK 1
Objectif
Cette fiche présente un exemple simple de développement
d'une interface graphique avec la librairie tkinter, incluse
nativement dans l'environnement Python. Elle se base
néanmoins sur l'utilisation de classes de manière à permettre
d'étendre l'exemple à un projet plus ambitieux.
Fiche Ressource Python INTECHMER 23 mai 2023 im_FR_Pyt_TK_1
Page 2/2 Interface Graphique Tkinter : découverte simpleapp_tk.py
Explications du code
Ligne 1 : importation de TOUS les éléments du module tkinter (évite d'écrire tkinter.Button par ex.)
Ligne 5 : création d'une classe personnalisée héritant de la classe racine 'Tk'
Ligne 6 : chaque classe doit posséder un constructeur ; nom imposé : __init__(self...)
Ligne 7 : appel (obligatoire) du constructeur de la classe 'mère' pour initialiser la fenêtre
Lignes 10-19 : création des éléments graphiques. Le mot 'self' placé devant les variables et séparé par
un '.' (exemple : self.bt1) indique que la variable est un membre de l'instance de classe créée par le
constructeur (implicitement appelé lors de la ligne 42). Le mot 'self' placé comme premier
paramètre des objets (exemple : Button(self, …)) indique que ces objets sont 'fils de' la classe, donc
ici fils d'une fenêtre Tk
Ligne 10 : le bouton désigné par le membre 'bt1' est attaché à une action (OnMajuscule).
Ligne 11 : le bouton 'bt2' est attaché à l'action 'quit' de l'instance de classe (donc un objet Tk).
Ligne 12 : 'bg' et 'fg' signifient : background et foreground (arrière plan et avant plan)
Lignes 17-18 : une case à cocher (Checkbutton) doit être liée à une variable pour connaître son état.
Ligne 21 : gestionnaire de placement des objets par une grille (en anglais on parle de 'Grid Layout')
Lignes 22-28 : placement des objets par désignation des lignes (row) / colonnes (column) dans la grille
Remarque : d'autres méthodes de placement plus rigoureuses sont possibles mais elles sont
plus compliquées à aborder dans une initiation. Se renseigner sur les ‘Frame’ par exemple.
Ligne 30 : méthode de la classe appelée après l'appui du bouton 'bt1'. Utilise la méthode 'upper' des
objets de type 'chaîne de caractères <str>'. Le premier paramètre de la méthode ('self') indique que
cette méthode appartient à l'instance de classe qui sera passée implicitement lors de l'appel.
Remarque : le mot 'END' est connu du programme grâce à : from Tkinter import *
Ligne 36 : test de l'état de la case à cocher (renvoie 'True' si la case est cochée)
Lignes 37 et 39 : changement d'une propriété (.config(state=...)) d'un bouton
Ligne 42 : début du programme principal. Création d'une instance de l'objet 'exempleSimple', donc
appel automatique de son constructeur
Ligne 44 : démarrage de la boucle sans fin de l'interface graphique (mainloop). On ne quittera le
programme qu'en cliquant sur le bouton 'bt2' ou en fermant la fenêtre de l'application
Exercices
-1- Repérez bien le positionnement des éléments dans l'interface ; constatez qu'il y a 5 lignes et 2 colonnes et que
chaque élément a des coordonnées (Ligne,Colonne) dont la première est (0,0).
-2- Ajoutez un nouveau bouton (et sa fonction ‘command’ associée) pour effacer le contenu des deux zones de textes.
-3- Ajoutez les objets nécessaires pour afficher le texte original en minuscule, en dessous de celui mis en majuscule. Il
vous faudra donc un nouveau bouton, un nouveau label, une nouvelle ‘entry’ et bien sûr une nouvelle fonction qui se
chargera d’afficher le texte en minuscule dans la zone prévue.
-4- Développez l'interface graphique d'une calculatrice simple avec 10 chiffres, '+', '-', '*', '/' et le signe '=',
ainsi qu'une zone de saisie affichant le calcul initial et une autre zone de saisie affichant le résultat.
Commencez par dessiner sur une feuille une grille au crayon, puis placez les éléments de l'interface dans la grille.
Le programme doit inscrire dans une première zone de saisie les chiffres et les opérations demandées à la souris. Le
texte 'grossit' au fur et à mesure par la droite (par exemple '1' puis '1+' puis '1+4').
Quand on clique sur le signe '=' le résultat de l'opération s'inscrit dans une autre zone de saisie (utilisez eval(...)
pour évaluer le contenu de la chaîne de caractères correspondant à l'opération souhaitée).
Protégez votre programme en affichant 'error !' si le contenu de la zone de texte de l'opération n'est pas 'évaluable'
(car après tout c'est une zone de saisie et vous pouvez y saisir un bon calcul au clavier, ou n’importe quoi...).
-5- Ajoutez deux nouvelles ‘touches’ à votre calculatrice : exponentielle et logarithme népérien. Vous aurez besoin
d’importer la librairie math pour réaliser ces calculs.