Tuto Python & Tkinter : créer une fenêtre graphique

Table des matières

Introduction

Création d’une fenêtre

Conclusion

Introduction :

Jusqu’à présent nous avons pu travailler sur la console de Python afin de créer de différents programmes et avoir des résultats, mais en réalité, nous pouvons également concevoir des applications ou des interfaces graphiques simples à l’utilisation et composés de plusieurs modules attractifs dans le but de répondre à nos besoins.

 Dans ce tutoriel, on va introduire un des modules permettant de créer des interfaces graphiques : tkinter, qui est un module composé de plusieurs éléments graphiques produisant une représentation graphique d’un programme informatique.

Ce module se base essentiellement sur la pratique afin de bien comprendre ses différents éléments, et par conséquent, on va introduire des exemples pour vous guider pas à pas, afin de créer votre première application.

Création d’une fenêtre :

Importation du module tkinter :

En premier temps, pour pouvoir utiliser les éléments et les fonctionnalités de ce module, il va falloir l’importer avec ses éléments, et on écrit toujours comme première instruction :

# L'importation de l’ensemble des éléments du paquet tkinter :
from tkinter import *

L'opérateur * permet d'importer l’ensemble des éléments du module. Ou bien, on peut utiliser l’instruction suivante :

# L'importation de l’ensemble des éléments du paquet tkinter :
import tkinter

Remarque : En utilisant cette dernière instruction, l’appel des éléments de paquet tkinter doit commencer par tkinter. On va illustrer sur la partie suivante la différence au niveau de la syntaxe entre les deux instructions. Ainsi, on utilisera dans la suite du tutoriel la première instruction.

Création et affichage de la fenêtre principale :

Création d’une fenêtre :

En utilisant la classe Tk importée du module tkinter, on crée un objet qui va représenter la fenêtre principale de notre application :

# L'importation de l’ensemble des éléments du paquet tkinter :
from tkinter import *
# Création d'une fenêtre avec la classe Tk :
fenetre = Tk()
# En utilisant l’instruction « from tkinter import * », on peut appeler les éléments du module directement.

Ou bien (pour illustrer la différence des deux syntaxes de la partie précédente) :

# L'importation de l’ensemble des éléments du paquet tkinter :
import tkinter
# Création d'une fenêtre avec la classe Tk :
fenetre = tkinter.Tk()
# En utilisant l’instruction « import tkinter », on définit le module avant d'appeler un de ses éléments.


Affichage d’une fenêtre :

D’autre part, pour afficher cette fenêtre qu’on a créé, on utilise la méthode mainloop()  tel que :

Syntaxe :

# L'importation de l’ensemble des éléments du paquet tkinter :
from tkinter import *
# Création d'une fenêtre avec la classe Tk :
fenetre = Tk()
# Affichage de la fenêtre créée :
fenetre.mainloop()

Résultat d’exécution :

Personnaliser la fenêtre principale :

Ajouter un titre :

Pour ajouter un titre à la fenêtre principale, on utilise la méthode title().

Exemple :

En progressant sur l’exemple de ce tutoriel :

Syntaxe :

# L'importation de l’ensemble des éléments du paquet tkinter :
from tkinter import *
# Création d'une fenêtre avec la classe Tk :
fenetre = Tk()
# Ajout d'un titre à la fenêtre principale :
fenetre.title("Mon application")
# Affichage de la fenêtre créée :
fenetre.mainloop()

Résultat d’exécution :

Ajouter une icône :

Afin de définir un logo personnalisé à la fenêtre principale, on utilise la méthode iconbitmap().

Notez bien : qu’on doit convertir le logo qu’on veut définir en extension .ico , et l’ajouter dans le dossier de notre programme.

Exemple :

En prenant comme exemple le logo suivant : 

, on l’introduit à notre application tel que :

Syntaxe :

# L'importation de l’ensemble des éléments du paquet tkinter :
from tkinter import *
# Création d'une fenêtre avec la classe Tk :
fenetre = Tk()
# Ajout d'un titre à la fenêtre principale :
fenetre.title("Mon application")
# Définir un icone :
fenetre.iconbitmap("logo.ico")
# Affichage de la fenêtre créée :
fenetre.mainloop()

Résultat d’exécution :

Configurer l’arrière-plan de la fenêtre principale :

Pour configurer un aspect tel que la couleur de l’arrière-plan, on utilise la méthode config(), contenant comme argument, le paramètre bg ou background qu’on lui affecte la valeur de la couleur tel que bg = ‘red’ ou bg = ‘blue’ ou le code hexadécimal de la couleur en 4, 8, 12 ou 16 bits tel que : bg = ‘#808000’ pour la couleur jaune ou bg = ‘#87CEEB’ pour la couleur bleu ciel.

Exemple :

Syntaxe :

# L'importation de l’ensemble des éléments du paquet tkinter :
from tkinter import *
# Création d'une fenêtre avec la classe Tk :
fenetre = Tk()
# Ajout d'un titre à la fenêtre principale :
fenetre.title("Mon application")
# Définir un icone :
fenetre.iconbitmap("logo.ico")
# Personnaliser la couleur de l'arrière-plan de la fenêtre principale :
fenetre.config(bg = "#87CEEB")
# Affichage de la fenêtre créée :
fenetre.mainloop()

Résultat d’exécution :

Personnaliser les dimensions par défaut d’affichage de la fenêtre principale :

Pour personnaliser la taille d’affichage par défaut de la fenêtre principale, on utilise la méthode geometry(), en ayant comme attribut la largeur x la hauteur en pixels.

Exemple :

Syntaxe :

# L'importation de l’ensemble des éléments du paquet tkinter :
from tkinter import *
# Création d'une fenêtre avec la classe Tk :
fenetre = Tk()
# Ajout d'un titre à la fenêtre principale :
fenetre.title("Mon application")
# Définir un icone :
fenetre.iconbitmap("logo.ico")
# Personnaliser la couleur de l'arrière-plan de la fenêtre principale :
fenetre.config(bg = "#87CEEB")
# Définir les dimensions par défaut la fenêtre principale :
fenetre.geometry("640x480")
# Affichage de la fenêtre créée :
fenetre.mainloop()

Résultat d’exécution :

Lors de l’appel de l’application, elle s’affichera par défaut en ayant les dimensions 640x480 pixels :

Limiter les dimensions d’affichage de la fenêtre principale :

Afin de personnaliser la limite de la taille maximale et minimale dont la fenêtre principale doit s’afficher, on utilise les méthodes minsize() pour la taille minimale et maxsize() pour la taille maximale ayant comme premier attribut la largeur en pixels, et comme deuxième attribut la hauteur en pixels.

Exemple :

Syntaxe :

# L'importation de l’ensemble des éléments du paquet tkinter :
from tkinter import *
# Création d'une fenêtre avec la classe Tk :
fenetre = Tk()
# Ajout d'un titre à la fenêtre principale :
fenetre.title("Mon application")
# Définir un icone :
fenetre.iconbitmap("logo.ico")
# Personnaliser la couleur de l'arrière-plan de la fenêtre principale :
fenetre.config(bg = "#87CEEB")
# Définir les dimensions par défaut la fenêtre principale :
fenetre.geometry("640x480")
# Limiter les dimensions d’affichage de la fenêtre principale :
fenetre.maxsize(800,600)
fenetre.minsize(300,400)
# Affichage de la fenêtre créée :
fenetre.mainloop()

Résultat d’exécution :

Dans ce cas la taille minimale de notre application sera telle que :

Ajouter des widgets :

Le module tkinter sur Python comporte plusieurs widgets qui sont des composants graphiques qu’on peut ajouter à notre fenêtre tels que : des boutons « Button », des cases à cocher « Checkbutton », des boutons radio « Radiobutton », des textes ou images « Label » , des listes « Listbox », des cadres « Frame », un bouton de menu « Menubutton », une barre de menu « Menu », des canvas « Canvas », des entrées d’utilisateur « Entry », des barres de défilement « Scrollbar », des échelles glissantes « Scale »… etc.

Chacun de ces widgets comporte des paramètres permettant de personnaliser leurs couleurs de l’arrière-plan ou du texte, leurs dimensions, la police de leurs caractères... etc.

Ainsi, pour les organiser et les placer, on utilise une des méthodes suivantes :

  • ·pack() qui permet d’organiser et placer des widgets en blocs.
  • ·grid() qui permet d’organiser et placer des widgets en étant comme des cases de tableau.
  • ·place() qui permet d’organiser et placer des widgets dans un endroit précisé.

Ce tutoriel citera une partie de l’ensemble des widgets les plus utilisés.

Ajouter un texte « Label » :

Le widget « Label » sert à implémenter une zone sur laquelle on peut placer un texte ou une image, et sa syntaxe s’écrit sous la forme :

texte1 = Label (fenetre, les options du widget Label)

Exemple :

Syntaxe :

# L'importation de l’ensemble des éléments du paquet tkinter :
from tkinter import *
# Création d'une fenêtre avec la classe Tk :
fenetre = Tk()
# Ajout d'un texte dans la fenêtre :
texte1 = Label (fenetre, text = "Ceci est un Label"))
texte1.pack()
# Affichage de la fenêtre créée :
fenetre.mainloop()

Résultat d’exécution :

Ajouter un bouton « Button » :

Le widget « Button » sert à implémenter un bouton sur lequel on peut placer un texte ou une image, et on peut aussi lier une fonction qui sera appelée lorsque le bouton est cliqué, et sa syntaxe s’écrit sous la forme :

Exemple :

Syntaxe :

# L'importation de l’ensemble des éléments du paquet tkinter :
from tkinter import *
# Création d'une fenêtre avec la classe Tk :
fenetre = Tk()
# Ajout d'un bouton dans la fenêtre :
bouton1 = Button (fenetre, text = "Cliquez ici")
bouton1.pack()
# Affichage de la fenêtre créée :
fenetre.mainloop()

Résultat d’exécution :

Ajouter un cadre « Frame » :

Le widget « Frame » sert à créer un cadre ou une zone sur laquelle on peut placer, grouper et organiser d’autres widgets, et sa syntaxe s’écrit sous la forme :

Cadre1 = Frame (fenetre, les options du widget Frame)

Exemple :

Syntaxe :

# L'importation de l’ensemble des éléments du paquet tkinter :
from tkinter import *
# Création d'une fenêtre avec la classe Tk :
fenetre = Tk()
# Création d'un cadre dans la fenêtre :
cadre1 = Frame(fenetre)
cadre1.pack()
# Ajout de boutons dans le cadre :
bouton1 = Button (cadre1, text = "bouton1")
bouton2 = Button (cadre1, text = "bouton2")
bouton3 = Button (cadre1, text = "bouton3")
bouton1.pack()
bouton2.pack()
bouton3.pack()
# Affichage de la fenêtre créée :
fenetre.mainloop()

Résultat d’exécution :

Ajouter un champ de saisie de l’utilisateur « Entry » :

Le widget « Entry » sert à implémenter un champ sur lequel l’utilisateur peut saisir un texte, et sa syntaxe s’écrit sous la forme :

entrée1 = Entry (fenetre, les options du widget Entry)

Exemple :

Syntaxe :

# L'importation de l’ensemble des éléments du paquet tkinter :
from tkinter import *
# Création d'une fenêtre avec la classe Tk :
fenetre = Tk()
# Création d'un champ de saisie de l'utilisateur dans la fenêtre :
entrée1 = Entry (fenetre)
entrée1.pack()
# Affichage de la fenêtre créée :
fenetre.mainloop()

Résultat d’exécution :

Ajouter des cases à cocher « Checkbutton » :

Le widget « Checkbutton » sert à afficher un certain nombre d'options sous forme de cases à cocher que l'utilisateur peut en sélectionner plusieurs, et sa syntaxe s’écrit sous la forme :

case_cocher1 = Checkbutton (fenetre, les options du widget Checkbutton)

Exemple :

Syntaxe :

# L'importation de l’ensemble des éléments du paquet tkinter :
from tkinter import *
# Création d'une fenêtre avec la classe Tk :
fenetre = Tk()
# Création des cases à cocher "Checkbutton" dans la fenêtre :
case_cocher1 = Checkbutton (fenetre, text = "choix 1")
case_cocher2 = Checkbutton (fenetre, text = "choix 2")
case_cocher3 = Checkbutton (fenetre, text = "choix 3")
case_cocher1.pack()
case_cocher2.pack()
case_cocher3.pack()
# Affichage de la fenêtre créée :
fenetre.mainloop()

Résultat d’exécution :

Ajouter des boutons radio « RadioButton » :

Le widget « Radiobutton » sert à afficher un certain nombre d'options sous forme de cases à cocher que l'utilisateur peut en sélectionner qu’une seule, et sa syntaxe s’écrit sous la forme :

case_radio = RadioButton (fenetre, les options du widget RadioButton)

Exemple :

Syntaxe :

# L'importation de l’ensemble des éléments du paquet tkinter :
from tkinter import *
# Création d'une fenêtre avec la classe Tk :
fenetre = Tk()
# Création des cases à cocher "Radiobutton" dans la fenêtre :
case_cocher1 = Radiobutton (fenetre, text = "choix 1")
case_cocher2 = Radiobutton (fenetre, text = "choix 2")
case_cocher3 = Radiobutton (fenetre, text = "choix 3")
case_cocher1.pack()
case_cocher2.pack()
case_cocher3.pack()
# Affichage de la fenêtre créée :
fenetre.mainloop()

Résultat d’exécution :

Ajouter des listes « Listbox » :      

Le widget « Listbox » sert à fournir à l'utilisateur une liste d’options, et sa syntaxe s’écrit sous la forme :

liste1 = Listbox (fenetre, les options du widget Listbox)

Exemple :

Syntaxe :

# L'importation de l’ensemble des éléments du paquet tkinter :
from tkinter import *
# Création d'une fenêtre avec la classe Tk :
fenetre = Tk()
# Création d'une liste dans la fenêtre :
# la méthode insert() sert à inserer des valeur à la liste :
liste1 = Listbox (fenetre)
liste1.insert(1, "valeur 1")
liste1.insert(2, "valeur 2")
liste1.insert(3, "valeur 3")
liste1.insert(4, "valeur 4")
liste1.pack()
# Affichage de la fenêtre créée :
fenetre.mainloop()

Résultat d’exécution :

Ajouter un « Spinbox » :

Le widget « Spinbox » sert à ajouter un champ de saisie d’utilisateur, ou bien, à ajouter un bouton sur lequel l’utilisateur peut choisir une valeur dans une intervalle précise, et sa syntaxe s’écrit sous la forme :

spin1 = Spinbox (fenetre, les options du widget Spinbox)

Exemple :

Syntaxe :

# L'importation de l’ensemble des éléments du paquet tkinter :
from tkinter import *
# Création d'une fenêtre avec la classe Tk :
fenetre = Tk()
# Création d'un Spinbox dans la fenêtre :
liste1 = Spinbox (fenetre)
liste1.pack()
# Affichage de la fenêtre créée :
fenetre.mainloop()

Résultat d’exécution :

Ajouter une barre de menu « Menu » :

Le widget « Menubutton » sert à configurer une barre de menu sur laquelle l’utilisateur peut choisir des options, et sa syntaxe s’écrit sous la forme :

menu1 = Menu (fenetre, les options du widget Menubutton)

Exemple :

Syntaxe :

# L'importation de l’ensemble des éléments du paquet tkinter :
from tkinter import *
# Création d'une fenêtre avec la classe Tk :
fenetre = Tk()
# Création d'une barre de menu dans la fenêtre :
menu1 = Menu(fenetre)
menu1.add_cascade(label="Fichier")
menu1.add_cascade(label="Options")
menu1.add_cascade(label="Aide")
# Configuration du menu dans la fenêtre
fenetre.config(menu = menu1)
# Affichage de la fenêtre créée :
fenetre.mainloop()

Résultat d’exécution :

Conclusion :

Dans ce tutoriel, on a illustré les fondations permettant de définir le design d’une interface graphique en utilisant le module tkinter sur Python, on révèlera dans un prochain tutoriel comment les personnaliser et les commandes qu’on peut utiliser afin de rendre une application efficace et utilisable pour répondre à votre besoin. Merci pour votre attention ! Et bonne chance à vous !

Article publié le 08 Octobre 2020par Ismail BOUZIANE