NOTE DE COURS DE PROGRAMMATION
GRAPHIQUE ET EVENEMENTIELLE EN
PYTHON
Objectifs : A la fin de ce cours, l’étudiant sera capable de créer
des interfaces graphiques en python et maitriser quelques
contrôleurs.
Plan
- Introduction
- Rappel sur quelques notions de programmation
- Programmation graphique avec la bibliothèque tkinter.
1. Introduction
Qu'est-ce que Python ?
Le langage de programmation Python a été créé en 1989 par Guido van Rossum, aux
Pays-Bas. Le nom Python vient d'un hommage à la série télévisée Monty Python's Flying
Circus dont G. van Rossum est fan. La première version publique de ce langage a été
publiée en 1991.
La dernière version de Python est la version 3. Plus précisément, la version 3.11 a été
publiée en octobre 2022. La version 2 de Python est obsolète et n'est plus maintenue,
évitez de l'utiliser.
La Python Software Foundation est l'association qui organise le développement de Python
et anime la communauté de développeurs et d'utilisateurs.
Ce langage de programmation présente de nombreuses caractéristiques intéressantes :
Il est multiplateforme. C'est-à-dire qu'il fonctionne sur de nombreux systèmes
d'exploitation : Windows, Mac OS X, Linux, Android, iOS, depuis les mini-ordinateurs
Raspberry Pi jusqu'aux supercalculateurs.
Il est gratuit. Vous pouvez l'installer sur autant d'ordinateurs que vous voulez (même sur
votre téléphone !).
C'est un langage de haut niveau. Il demande relativement peu de connaissance sur le
fonctionnement d'un ordinateur pour être utilisé.
C'est un langage interprété. Un script Python n'a pas besoin d'être compilé pour être
exécuté, contrairement à des langages comme le C ou le C++.
Il est orienté objet. C'est-à-dire qu'il est possible de concevoir en Python des entités qui
miment celles du monde réel (une molécule d'ADN, une protéine, un atome, etc.) avec un
certain nombre de règles de fonctionnement et d'interactions.
Il est relativement simple à prendre en main.
C'est le langage de programmation le plus utilisé au monde (voir les classements TIOBE
et IEEE Spectrum).
Enfin, il est très utilisé en bioinformatique, chimie-informatique et plus généralement en
analyse de données.
Toutes ces caractéristiques font que Python est désormais enseigné dans de nombreuses
formations, du lycée à l'enseignement supérieur.
2
2. Rappel sur quelques éléments de
la programmation
Variables
Une variable est une zone de la mémoire de l'ordinateur dans laquelle une valeur est
stockée. Aux yeux du programmeur, cette variable est définie par un nom, alors que pour
l'ordinateur, il s'agit en fait d'une adresse, c'est-à-dire d'une zone particulière de la mémoire.
En Python, la déclaration d'une variable et son initialisation (c'est-à-dire la première valeur
que l'on va stocker dedans) se font en même temps. Pour vous en convaincre, testez les
instructions suivantes après avoir lancé l'interpréteur :
>>> x = 2
>>> x
2
Ligne 1. Dans cet exemple, nous avons déclaré, puis initialisé la variable x avec la valeur
2. Notez bien qu'en réalité, il s'est passé plusieurs choses :
Python a « deviné » que la variable était un entier. On dit que Python est un langage au
typage dynamique.
Python a alloué (réservé) l'espace en mémoire pour y accueillir un entier. Chaque type de
variable prend plus ou moins d'espace en mémoire. Python a aussi fait en sorte qu'on
puisse retrouver la variable sous le nom x.
Enfin, Python a assigné la valeur 2 à la variable x.
Le type d'une variable correspond à la nature de celle-ci.
Les trois principaux types dont nous aurons besoin dans un premier temps sont :
- Les entiers (integer ou int),
- Les nombres décimaux que nous appellerons floats et ,
- Les chaînes de caractères (string ou str).
Affichage
La fonction print()
La fonction print() affiche l'argument qu'on lui passe entre parenthèses et un retour
à ligne. Ce retour à ligne supplémentaire est ajouté par défaut. Si toutefois, on ne veut pas
afficher ce retour à la ligne, on peut utiliser l'argument par « mot-clé » end :
>>> print("Hello world!")
Hello world!
>>> print("Hello world!", end="")
Hello world!>>>
Tests
Les tests sont un élément essentiel à tout langage informatique si on veut lui donner un
peu de complexité car ils permettent à l'ordinateur de prendre des décisions. Pour cela,
Python utilise l'instruction if ainsi qu'une comparaison. Voici un premier exemple :
>>> x = 2
>>> if x == 2:
... print("Le test est vrai !")
...
Le test est vrai !
et un second :
>>> x = "souris"
>>> if x == "tigre":
... print("Le test est vrai !")
...
Il y a plusieurs remarques à faire concernant ces deux exemples :
Dans le premier exemple, l'instruction print("Le test est vrai !") est exécutée, car le test
est vrai. Dans le second exemple, le test est faux et rien n'est affiché.
Les blocs d'instructions dans les tests doivent forcément être indentés comme pour les
boucles for et while. L'indentation indique la portée des instructions à exécuter si le test
est vrai.
Comme avec les boucles for et while, la ligne qui contient l'instruction if se termine par le
caractère deux-points « : ».
Tests à plusieurs cas
Parfois, il est pratique de tester si la condition est vraie ou si elle est fausse dans une
même instruction if. Plutôt que d'utiliser deux instructions if, on peut se servir des
instructions if et else :
>>> x = 2
>>> if x == 2:
... print("Le test est vrai !")
... else:
... print("Le test est faux !")
...
4
Le test est vrai !
>>> x = 3
>>> if x == 2:
... print("Le test est vrai !")
... else:
... print("Le test est faux !")
...
Le test est faux !
On peut utiliser une série de tests dans la même instruction if, notamment pour tester
plusieurs valeurs d'une même variable.
Par exemple, on se propose de tirer au sort une base d'ADN puis d'afficher le nom de cette
dernière. Dans le code suivant, nous utilisons l'instruction [Link](liste) qui renvoie
un élément choisi au hasard dans une liste. L'instruction import random sera vue plus tard
dans le chapitre 9 Modules, admettez pour le moment qu'elle est nécessaire :
>>> import random
>>> base = [Link](["a", "t", "c", "g"])
>>> if base == "a":
... print("choix d'une adénine")
... elif base == "t":
... print("choix d'une thymine")
... elif base == "c":
... print("choix d'une cytosine")
... elif base == "g":
... print("choix d'une guanine")
...
choix d'une cytosine
Boucles for
En programmation, on est souvent amené à répéter plusieurs fois une instruction.
Incontournables à tout langage de programmation, les boucles vont nous aider à réaliser
cette tâche répétitive de manière compacte et efficace.
Imaginez par exemple que vous souhaitiez afficher les éléments d'une liste les uns après
les autres. Dans l'état actuel de vos connaissances, il faudrait taper quelque chose du
style :
animaux = ["girafe", "tigre", "singe", "souris"]
print(animaux[0])
print(animaux[1])
print(animaux[2])
print(animaux[3])
Si votre liste ne contient que 4 éléments, ceci est encore faisable mais imaginez qu'elle
en contienne 100 voire 1 000 ! Pour remédier à cela, il faut utiliser les boucles . Regardez
l'exemple suivant :
>>> animaux = ["girafe", "tigre", "singe", "souris"]
>>> for animal in animaux:
... print(animal)
...
girafe
tigre
singe
souris
6
Interfaces graphiques en Python
avec Tkinter
La programmation graphique aussi abrégé GUI (Graphic User Interface) est
différent de la programmation sous console. En effet pour un programme console, on
affiche du texte avec des print et on attend l’entrée de l’utilisateur avec des input.
Le code bloque tant que l’utilisateur n’a pas enfoncé la touche Entrée. 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.
Voici les événements les plus communs :
Un clic sur un bouton de la souris,
Le déplacement de la souris,
L’appui sur une touche du clavier,
Le relâchement d’une touche de clavier,
Un clic sur la croix de fermeture de la fenêtre principale,
Etc.
1. Les interfaces graphiques en Python
Python fournit diverses options pour développer des interfaces graphiques GUI :
1. Tkinter : Tkinter est l’interface Python de la bibliothèque GUI Tk livrée avec Python.
Nous allons l’étudier en détail sur ce chapitre.
2. wxPython : Ceci est une implémentation en Python libre et open source Python de
l’interface de programmation wxWidgets.
3. PyQt : Il s’agit également d’une interface Python pour une bibliothèque d’interface
graphique Qt populaire multiplate-forme.
4. JPython : JPython est un outil Python pour Java, qui donne aux scripts Python un accès
transparent aux bibliothèques de classes Java.
Il existe de nombreuses autres interfaces graphiques disponibles, que vous pouvez trouver
sur le net.
2 La bibliothèque graphique Tkinter
Tkinter est la bibliothèque d’interface graphique standard pour Python. Python,
lorsqu’il est combiné à Tkinter, fournit un moyen rapide et facile pour créer des applications
graphiques. Tkinter fournit une puissante interface orientée objet simple et conviviale.
La création d’une application graphique à l’aide de Tkinter est une tâche assez facile. Tout
ce que vous avez à faire est de suivre les étapes suivantes :
1. Importez le module Tkinter.
2. Créez la fenêtre principale de l’application graphique.
3. Ajoutez un ou plusieurs des widgets graphiques.
3
4. Entrez la boucle d’évènements principale pour agir contre chaque évènement
déclenché par l’utilisateur.
Exemple. création d’une simple fenetre Tkinter
* *
1 # − − coding : utf−8 − −
2 # Importation de la bibliothèque tkinter
3 from tkinter import*
4
5 # Création d ’une fenêtre tkinter
6 maFenetre = Tk()
7
8 # vos widgets ici : bouton de commande, champ de saisie , labels ...
9
10 # Entrez la boucle d ’événements principale 11 [Link]()
Ce qui affiche après exécution :
3 Les widgets Tkinter
La bibliothèque Tkinter fournit divers contrôles, tels que des boutons, des étiquettes et
des zones de texte utilisées dans une application graphique. Ces contrôles sont
communément appelés widgets.
Il existe actuellement 15 types de widgets dans Tkinter. Nous présentons ici les noms
de ces widgets ainsi qu’une brève description :
1. Button : le widget Button permet de créer des boutons pour votre application.
2. Canva : le widget Canva permet de dessiner des formes, telles que des lignes, des
ovales, des polygones et des rectangles, dans votre application.
3. Checkbutton : le widget Checkbutton permet d’afficher un certain nombre d’options
sous forme de cases à cocher. L’utilisateur peut sélectionner plusieurs options à la fois.
4. Entry : le widget Entry est utilisé pour afficher un champ de texte d’une seule ligne
permettant d’accepter les valeurs d’un utilisateur.
5. Frame : le widget Frame (cadre) est utilisé en tant que widget conteneur pour
organiser d’autres widgets.
6. Label : le widget Label est utilisé pour fournir une légende ou description pour les
autres widgets. Il peut aussi contenir des images.
7. Listbox : le widget Listbox est utilisé pour fournir une liste d’options à un utilisateur.
8. menubutton : le widget menubutton est utilisé pour afficher les menus dans votre
application.
9. Menu : le widget Menu est utilisé pour fournir diverses commandes à un utilisateur.
Ces commandes sont contenues dans Menubutton.
10. Message : le widget Message est utilisé pour afficher des champs de texte multilignes
permettant d’accepter les valeurs d’un utilisateur.
11. Radiobutton : le widget Radiobutton est utilisé pour afficher un certain nombre
d’options sous forme de boutons radio. L’utilisateur ne peut sélectionner qu’une option
à la fois.
12. Scale : le widget Echelle est utilisé pour fournir un widget à curseur.
13. Scrollbar : le widget Scrollbar ou barre de défilement est utilisé pour ajouter une
fonctionnalité de défilement à divers widgets, tels que les zones de liste.
14. Text : le widget Text est utilisé pour afficher du texte sur plusieurs lignes.
15. Toplevel : le widget Toplevel est utilisé pour fournir un conteneur de fenêtre séparé.
16. Spinbox : le widget Spinbox est une variante du widget standard Tkinter Entry, qui
peut être utilisé pour sélectionner un nombre fixe de valeurs.
17. PanedWindow : le widget PanedWindow est un conteneur pouvant contenir un
nombre quelconque de volets, disposés horizontalement ou verticalement.
18. LabelFrame : un labelframe est un simple widget de conteneur. Son objectif principal
est d’agir comme un intercalaire ou un conteneur pour les dispositions de fenêtre
complexes.
19. tkMessageBox : ce module est utilisé pour afficher des boîtes de message dans vos
applications.
4 Exemple de widget Tkinter
4.1 Le widget Button
Pour créer un bouton de commande sur une fenêtre Tkinter, on utilise la syntaxe :
1 Nom_du_bouton = Button( Nom_de_la_fenêtre, text =”Texte du bouton” , action = action_du_bouton())
Exemple. bouton quiter l’application
* *
1 # − − coding : utf−8 − −
2 from tkinter import*
3 maFenetre = Tk()
4
5 #Création d ’un bouton de commande
6 b = Button(maFenetre , text = ”Quitter” , command = quit)
7
8 # Placer le bouton sur la fenêtre
9 [Link]()
10
11 [Link]()
Ce qui affiche à l’exécution :
Avec l’action : ”quitter la fenêtre en cliquant sur le bouton”
4.2 Le widget label
L’insertion d’un lebel sur une fenêtre Tkinter est semblable à celui d’un bouton de
commande :
1 Nom_du_label = Label( Nom_de_la_fenêtre, text =”Texte du label”)
Exemple. label
* *
1 # − − coding : utf−8 − −
2 from tkinter import*
3 maFenetre = Tk()
4
5 #Création du label
6 lbl = Label(maFenetre , text = ”FAVO”)
7 # Placer le label sur la fenêtre 8 lbl .pack()
9
10 [Link]()
Ce qui affiche après exécution :
FAVO
Remarque 1.4.1. On peut aussi utiliser un texte variable, afin de donner la possibilité à
l’utilisateur de modifier le texte :
Exemple. texte variable
* *
1 # − − coding : utf−8 − −
2 from tkinter import *
3 fen = Tk()
4 var = StringVar()
5 label = Label( fen , textvariable=var)
6 [Link](”CRMEF OUJDA”)
7 label .pack()
8 [Link]()
On peut aussi changer le texte via une action associé à un bouton de commande
Exemple. ...
* *
1 # − − coding : utf−8 − −
2 from tkinter import *
3 fen = Tk()
4 def action() :
5 [Link](”J ’ ai changé le texte en cliquant”)
6 var = StringVar()
7 label = Label( fen , textvariable=var)
8 [Link](”CRMEF OUJDA”)
9 b = Button(fen , text = ”Essayez” , command=action)
10 [Link]()
11 label .pack()
12 [Link]()
4.3 Le champ de saisie Entry
4.3.1 Définition et syntaxe générale du widget Entry
Le champ Entry permet de créer une zone de saisie sur une seule ligne, pouvant servir à
la récupération des données saisie par l’utilisateur afin les utiliser comme variables
(formulaire d’inscription, formulaire d’identification...). La syntaxe est :
1 Nom_du_champ = Entry( Nom_de_la_fenêtre,options ...)
Syntaxe Voici la syntaxe pour créer un widget Entry
1 w = Entry (master, option , ...) 2 #
master : fenêtre parente.
3 #options : la liste des options pour le widget Entry.
Exemple. Widget Entry
1 from tkinter import *
2 root = Tk()
3 user_Entry = Entry(root ,bg=”blue”)
4 user = Label(root , text = ”User Name”)
5 [Link]()
6 user_Entry.pack()
7 root .mainloop()
Ce qui affiche après exécution :
4.3.2 Liste des options pour le widget Entry
1. bg : définit la couleur d’arrière-plan du widget Entry.
2. bd : définit la taille des bordures. La valeur par défaut est 2 pixels.
3. command : définit et associe une commande
4. cursor : définit le motif du curseur de la souris
5. font : définit la police qui sera utilisée pour le texte.
6. exportselection : par défaut, si vous sélectionnez du texte dans un widget Entry, il
peut être exporté vers le Presse-papiers. Pour éviter cette exportation, utilisez
exportselection = 0.
7. fg : définit la couleur qui sera utilisée pour le texte
8. highlightcolor : Il représente la couleur de surbrillance à utiliser pour le rectangle
qui est dessiné autour du widget lorsqu’il a le focus.
9. justify : Il spécifie comment le texte est organisé s’il contient plusieurs lignes. 10relief
Spécifie le type de bordure. Sa valeur par défaut est FLAT.
10. selectbackground : la couleur d’arrière-plan du texte sélectionné.
11. selectborderwidth : définit la largeur de la bordure à utiliser autour du texte
sélectionné. La valeur par défaut est un pixel.
12. selectforeground : définit la couleur de premier plan du texte sélectionné.
13. show : est utilisé pour afficher ou masquer les caractères. Exemple pour un mot de
passe on utilise show = "*".
14. state : la valeur par défaut est state = NORMAL, mais vous pouvez utiliser state =
DISABLED pour masquer le contrôle et le rendre inactif.
15. textvariable : Pour pouvoir extraire le texte actuel de votre widget Entry, vous devez
définir cette option sur une instance de la classe StringVar.
16. width : définit la largeur du widget
17. xscrollcommand : ajoute une barre de défilement au widget.
4.3.3 Les méthodes associés au widget Entry
1. delete : ( first, last = None) : Supprime les caractères du widget, en commençant
par celui qui est à l’index first, jusqu’au dernier last
2. get() : renvoie le texte actuel de l’entrée sous forme de variable chaîne.
3. icursor(index) : place le curseur d’insertion juste avant le caractère à l’index donné.
4. index(index) : décale le contenu de l’entrée de sorte que le caractère à l’index donné
soit le caractère visible le plus à gauche. N’a aucun effet si le texte est entièrement
contenu dans l’entrée.
5. insert(index, s) : insère la chaîne s avant le caractère à l’index donné.
6. select_adjust (index) : cette méthode permet de s’assurer que la sélection inclut le
caractère à l’index spécifié.
7. select_clear () : efface la sélection. S’il n’y a pas actuellement de sélection, n’a aucun
effet.
8. select_form(index) : définit la position de l’index d’ancrage sur le caractère spécifié
par l’index.
9. select_present() : s’il y a une sélection, renvoie vrai, sinon renvoie faux.
10. select_range(début, fin) : sélectionne les caractères qui existent dans la plage
spécifiée.
11. select_to(index) : sélectionne tous les caractères du début à l’index spécifié.
12. xview(index) : utilisé pour lier le widget de saisie à une barre de défilement
horizontale.
13. xview_scroll() : utilisé pour faire défiler l’entrée horizontalement.
Exemple. widget Entry
1 from tkinter import *
2 root = Tk()
3 user = Label(root , text = ”User Name”)
4 [Link]( side = LEFT )
5 user_Entry = Entry(root , bd = 10, bg=”green”)
6 user_Entry.pack( side=RIGHT )
7 root .mainloop()
Ce qui affiche après exécution :
4.4 Associer une action ou évènement à un Widget Tkinter
4.4.1 Associer une action à un bouton de commande
4.4.2 Associer un évènement à un bouton de commande (bind action)
4.4.3 Associer un évènement à un champ Entry (bind action)
On peut associer un évènement à un champ de saisi à l’aide de la méthode bind() :
1 [Link](”<Return>” , actionEvent)
Exemple. Evènement associé à un champ de saisi :
1 def actionEvent(event) :
2 lbl . configure(text = ”Vous avez tapé = ”+ [Link]())
3
4 root = Tk()
5 entry = Entry(root)
6
7 # Association de lévènement actionEvent au champ de saisie
8 [Link](”<Return>” , actionEvent)
9 lbl = Label(root , text = ” . . . . . ”)
10 [Link]()
11 lbl .pack()
12 root .mainloop()
4.5 Le widget Text
4.5.1 Syntaxe & description du widget Text
Le widget Text offre des fonctionnalités avancées vous permettant d’éditer un texte
multilingue et de formater son affichage, en modifiant sa couleur et sa police...
Vous pouvez également utiliser des structures élégantes telles que des onglets et des
marques pour localiser des sections spécifiques du texte et appliquer des modifications à ces
zones. De plus, vous pouvez incorporer des fenêtres et des images dans le texte car ce
widget a été conçu pour gérer à la fois le texte brut et le texte mis en forme. Syntaxe pour
du widget Text
1 Nom_du_widget_Text = Texte (parent , options , ...)
Le paramètre parent : représente la fenêtre parent. options
: représente la liste des options pour le widget.
4.5.2 Les options disponibles pour le widget Text
Voici la liste des options les plus utilisées pour ce widget. Ces options peuvent être utilisées
sous forme de paires clé-valeur séparées par des virgules :
1. bg : la couleur d’arrière-plan par défaut du widget de texte.
2. bd : la largeur de la bordure autour du widget de texte. La valeur par défaut est 2
pixels.
3. cursor : le curseur qui apparaîtra lorsque la souris survolera le widget texte.
4. exportselection : normalement, le texte sélectionné dans un widget de texte est
exporté pour être sélectionné dans le gestionnaire de fenêtres. Définissez
exportselection = 0 si vous ne voulez pas ce comportement.
5. font : la police par défaut pour le texte inséré dans le widget.
6. fg : la couleur utilisée pour le texte (et les bitmaps) dans le widget. Vous pouvez
changer la couleur pour les régions marquées; cette option est juste la valeur par
défaut.
7. height : la hauteur du widget en lignes (pas en pixels!), Mesurée en fonction de la
taille de la police actuelle.
8. highlightbackbackground : la couleur du focus est mise en surbrillance lorsque le
widget de texte n’a pas le focus.
9. highlightcolor : la couleur du focus est mise en surbrillance lorsque le widget de texte
a le focus.
10. highlightthickness : l’épaisseur du focus est mise en évidence. La valeur par défaut
est 1. Définissez l’épaisseur de la sélection = 0 pour supprimer l’affichage de la
surbrillance.
11. insertbackground : la couleur du curseur d’insertion. Le défaut est noir.
12. insertborderwidth : taille de la bordure 3D autour du curseur d’insertion. La valeur
par défaut est 0.
13. insertofftime : le nombre de millisecondes pendant lequel le curseur d’insertion est
désactivé pendant son cycle de clignotement. Définissez cette option sur zéro pour
supprimer le clignotement. La valeur par défaut est 300.
14. insertontime : le nombre de millisecondes pendant lequel le curseur d’insertion est
activé pendant son cycle de clignotement. La valeur par défaut est 600.
15. insertwidth : largeur du curseur d’insertion (sa hauteur est déterminée par l’élément
le plus grand de sa ligne). La valeur par défaut est 2 pixels.
16. padx : la taille du remplissage interne ajouté à gauche et à droite de la zone de texte.
La valeur par défaut est un pixel.
17. pady : la taille du remplissage interne ajouté au-dessus et au-dessous de la zone de
texte. La valeur par défaut est un pixel.
18. relief : l’apparence 3-D du widget de texte. La valeur par défaut est relief = SUNKEN.
19. selectbackground : la couleur de fond à utiliser pour afficher le texte sélectionné.
20. selectborderwidth : la largeur de la bordure à utiliser autour du texte sélectionné.
21. spacing1 : cette option spécifie combien d’espace vertical supplémentaire est placé
au-dessus de chaque ligne de texte. Si une ligne est renvoyée à la ligne, cet espace est
ajouté uniquement avant la première ligne occupée à l’écran. La valeur par défaut est
0.
22. spacing2 : cette option spécifie la quantité d’espace vertical supplémentaire à ajouter
entre les lignes de texte affichées lorsqu’une ligne logique est renvoyée à la ligne. La
valeur par défaut est 0
23. spacing3 : cette option spécifie combien d’espace vertical supplémentaire est ajouté
en dessous de chaque ligne de texte. Si une ligne est renvoyée à la ligne, cet espace
est ajouté uniquement après la dernière ligne occupée à l’écran. La valeur par défaut
est 0.
24. state : normalement, les widgets de texte répondent aux évènements de clavier et de
souris; set state = NORMAL pour obtenir ce comportement. Si vous définissez state =
DISABLED, le widget texte ne répondra pas et vous ne pourrez pas non plus modifier
son contenu par programme.
25. tabs : cette option contrôle la manière dont les caractères de tabulation positionnent
le texte.
26. width : la largeur du widget en caractères (pas en pixels!), Mesurée en fonction de la
taille de la police actuelle.
27. wrap : cette option contrôle l’affichage des lignes trop larges. Définissez wrap = WORD
et la ligne sera coupée après le dernier mot qui convient. Avec le comportement par
défaut, wrap = CHAR, toute ligne trop longue sera brisée par n’importe quel caractère.
28. xscroll : pour que le widget texte puisse défiler horizontalement, définissez cette
option sur la méthode set() de la barre de défilement horizontale.
29. yscroll : pour que le widget texte puisse défiler verticalement, définissez cette option
sur la méthode set() de la barre de défilement verticale.
4.5.3 Les méthodes associées au widget Text
Voici la liste des principales méthodes associées à l’objet Text
1. delete (startindex [, endindex]) : cette méthode supprime un caractère spécifique
ou une plage de texte.
2. get (startindex [, endindex]) : cette méthode retourne un caractère spécifique ou
une plage de texte.
3. index (index) : etourne la valeur absolue d’un index basé sur l’index donné.
4. insert (index [, string] ...) : cette méthode insère des chaînes à l’emplacement
d’index spécifié.
5. see(index) : ette méthode retourne true si le texte situé à la position d’index est
visible.
6. mark_gravity (mark [, gravity]) : retourne la gravité de la marque donnée. Si le
deuxième argument est fourni, la gravité est définie pour la marque donnée.
7. mark_names () : retourne toutes les marques du widget Texte.
8. mark_set (mark, index) : informe une nouvelle position par rapport à la marque
donnée.
9. mark_unset (mark) : supprime la marque donnée du widget Texte.
10. tag_add (tagname, startindex [, endindex] ...) : cette méthode balise la position
définie par startindex ou une plage délimitée par les positions startindex et endindex.
11. tag_config() : Vous pouvez utiliser cette méthode pour configurer les propriétés de
la balise, qui comprennent, justifier (centre, gauche ou droite), des onglets (cette
propriété a les mêmes fonctionnalités que la propriété des onglets du widget Texte)
et un soulignement (utilisé pour souligner le texte marqué). ).
12. tag_delete (tagname) : cette méthode est utilisée pour supprimer une balise
donnée.
13. tag_remove (tagname [, startindex [.endindex]] ...) : après avoir appliqué cette
méthode, la balise donnée est supprimée de la zone fournie sans supprimer la
définition de balise réelle.
Exemple. Tkinter Text Widget
* *
1 # − − coding : utf−8 − −
2 from tkinter import *
3 root= Tk()
4 t = Text(root , fg=”red” , padx=50)
5 t . config(font=(”broadway” , 14))
6 t . insert(1.0, ”Exemple de widget Text Tkinter ”)
7 t .pack()
8 root .mainloop()
Ce qui affiche après exécution :
4.6 Le widget Frame Tkinter
Le widget Frame (cadre) est très important pour le processus de regroupement et
d’organisation des autres widgets de manière conviviale. Cela fonctionne comme un
conteneur, qui est responsable de la position des autres widgets.
Il utilise des zones rectangulaires à l’écran pour organiser la mise en page et fournir un
remplissage de ces widgets. Un Frame peut également être utilisé comme classe de base
pour implémenter des widgets complexes.
4.6.1 Syntaxe
1 w = Frame (master, option , ...)
1. master : représente la fenêtre parente.
2. options : liste des options les plus couramment utilisées pour ce widget. Ces options
peuvent être utilisées sous forme de paires clé-valeur séparées par des virgules.
4.6.2 Liste des options d’un widget Frame
1. bg : couleur d’arrière-plan du widget Frame
2. bd : taille des bordures autour du Frame.
3. cursor : permet de personnaliser le motif du curseur de la souris au moment du
survole.
4. height : définit la dimension verticale du Frame.
5. highlightbackground : définit la couleur de la mise au point en surbrillance de l’objet
Frame.
6. highlightcolor :
7. relief : avec la valeur par défaut relief = FLAT, la case à cocher ne ressort pas de son
arrière-plan. Vous pouvez définir cette option sur n’importe quel autre style.
8. width : définit la largeur du frame
Exemple. Frame Tkinter
* *
1 # − − coding : utf−8 − −
2 from tkinter import *
3
4 # Création de la fenêtre principale
5 master = Tk()
6 [Link](”400x200”)
7
8 #Création d ’un frame d ’ arrière plan vert
9 frm = Frame(master, bg=’green ’)
10
11 # Emplacement du frame
12 [Link](x=50, y=20, width=200,height=75)
13
14 # Création d ’un bouton au sein du frame
15 b = Button(frm, text=”un bouton” ,bg=’red ’ , fg=’white ’)
16 [Link](x=10, y=10, width=100,height=30)
17 [Link]()
Ce qui affiche après exécution :
5 Les attributs standard des widgets Tkinter
Malgré la diversité de leurs méthodes et propriétés, les widgets Tkinter possèdent des
attributs communs, tels que la taille, la couleur et la police sont spécifiés :
1. Dimensions
2. Colors
3. Fonts
4. Anchors
5. Relief styles
6. Bitmaps
7. Cursors
Exemple. Label avec couleur de font et background personnalisés
* *
1 # − − coding : utf−8 − −
2 from tkinter import *
3 #Création d ’une fenêtre Tkinter
4 f = Tk()
5 f .geometry(”300x75”)
6 #Création d ’un widget label de couleur blanche , bold , taille 18...
7 Centre = Label(f , text = ”CRMEF OUJDA ” , bg=”black” , fg=”white” , font=’broadway 18 bold ’)
8 [Link]()
9 f .mainloop()
Ce qui affiche après exécution :
6 Les méthodes de gestion des dispositions géométriques
des widgets
Tous les widgets Tkinter ont accès aux méthodes de gestion de géométrie spécifiques,
qui ont pour but d’organiser les widgets dans la zone du widget parent. Tkinter possède les
classes de gestionnaire de géométrie suivantes :
1. La méthode pack()
2. La méthode grid()
3. La méthode place()
6.1 La méthode de disposition géométrique pack()
Le gestionnaire de disposition géométrique pack(), organise les widgets en blocs avant
de les placer dans le widget parent. Les widgets sont placés l’un au dessous de l’autre selon
l’ordre d’application de la méthode pack() avec un emplacement centré par défaut.
Exemple. usage de la méthode pack()
* *
1 # − − coding : utf−8 − −
2 from tkinter import *
3
4 #Création d ’une fenêtre Tkinter
5 f = Tk()
6 f .geometry(”300x150”)
7 Nom = Label(f , text = ”Saisissez votre nom : ”)
8 Prenom = Label(f , text=”Saisissez votre prénom : ”)
9 champNom = Entry( f ) champPrenom = Entry( f )
10 [Link]()
11 [Link]()
12 [Link]()
13 [Link]()
14 f .mainloop()
Ce qui affiche après exécution :
6.2 La méthode de disposition géométrique grid()
Le gestionnaire de disposition géométrique grid(), organise les widgets dans une
structure de type table dans le widget parent.
Exemple. usage de la méthode grid()
* *
1 # − − coding : utf−8 − −
2 from tkinter import *
3
4 #Création d ’une fenêtre
5 Tkinter f = Tk()
6 f .geometry(”350x100”)
7
8 #Création des widgets
9 Nom = Label(f , text = ”Saisissez votre nom : ”)
10 Prenom = Label(f , text=”Saisissez votre prénom : ”)
11 champNom = Entry( f )
12 champPrenom = Entry( f )
13
14 #Application de la méthode grid () aux widget
15 Nom. grid(row=0, column=0)
16 Prenom. grid(row=1, column=0)
17 champNom. grid(row=0, column=1)
18 champPrenom. grid(row=1, column=1)
19 f .mainloop()
Ce qui affiche après exécution :
6.3 La méthode de disposition géométrique place()
Le gestionnaire de disposition géométrique place(), organise les widgets en les plaçant à
des positions spécifiques dans le widget parent suivant leurs coordonnées et leurs dimensions
:
Exemple. Usage de la méthode place() :
* *
1 # − − coding : utf−8 − −
2 from tkinter import *
3
4 #Création d ’une fenêtre Tkinter
5 f = Tk()
6 f .geometry(”400x200”)
7
8 #Création des widgets
9 Nom = Label(f , text = ”Saisissez votre nom : ”)
10 Prenom = Label(f , text=”Saisissez votre prénom : ”)
11 champNom = Entry( f )
12 champPrenom = Entry( f )
13 #Application de la méthode place() aux widget
14 [Link](x=5, y=75, width=160, height=25)
15 [Link](x=175, y=75, width=160, height=25)
16 [Link](x=5, y=120, width=160, height=25)
17 [Link](x=175, y=120, width=160, height=25)
18 f .mainloop()
Ce qui affiche après exécution :
7 Actions manipulant des widgets Tkinter
7.1 Action associée à un bouton de commande
8 Menu Tkinter en Python
Le rôle de ce widget est de vous permettre de créer toutes sortes de menus utilisables par
vos applications. La création d’un menu se déroule selon les étapes suivantes :
1. Création de la barre des menus
1 menuBar = Menu (master) # master designe la fenêtre principale
2. Création d’un menu principale :
1 menuPrincipal = Menu(menuBar, tearoff = 0)
2 #tearoff = 0 pour menu non détachable , tearoff=1 pour menu détachable
3 menuBar.add_cascade(label = ”label du menu principal” , menu=menuPrincipal)
3. Création d’une commande ou sous menu du menu principal
1 menuPrincipal.add_command(label=”Sous_menu” , command = ” .. ”)
4. Configuration de la barre des menus
1 master. config(menu = menuBar)
Exemple. menu Fichier
* *
1 # − − coding : utf−8 − −
2 from tkinter import *
3 master = Tk()
4
5 # Création de la barre des menu 6
menuBar = Menu(master)
7
8 # Création du menu principal ’ Fichier ’
9 menuFichier = Menu(menuBar, tearoff = 0)
10 menuBar.add_cascade(label=”Fichier” ,menu=menuFichier)
11
12 # Création des sous menus : ’Nouveau ’ , ’Ouvrir ’ , ’
Quitter ’
13 menuFichier.add_command(label=”Nouveau”)
14 menuFichier.add_command(label=”Ouvrir”)
15 menuFichier.add_command(label=”Quitter” , command=quit)
16
17 # Configuration de la barre des menus
18 master. config(menu=menuBar)
19 [Link]()
Ce qui affiche après exécution :
Références
—————————————————————————–
[1] Docmentation officielle Python : [Link]
[2] Gérard Swinnen. Apprendre à programmer avec Python [Link]
[3] Magnus Lie Hetland. Beginning Python From Novice to Professional, Second
Edition.
ISBN-13 (pbk) : 978-1-59059-982-2. Copyright 2008.
[4] Mark Lutz. learning Python . ISBN : 978-1-449-35573-9. 5 ème édition.
[5] Burkhard A. Meier. Python GUI Programming Cookbook. Copyright © 2015
Packt Publishing. ISBN 978-1- 78528-375-8.
[6] Bhaskar Chaudhary. Tkinter GUI Application Development Blueprints.
Copyright © 2015 Packt Publishing. ISBN 978-1-78588-973-8
20