Cours sur les interfaces graphiques en python
Python met à la disposition des développeurs, plusieurs modules permettant de concevoir des
interfaces graphiques. Le plus basic de ces derniers est le Tkinter. Nous concernant, on
travaillera sur le module customtkinter, qui est la version améliorée(mise à jour) de Tkinter.
Avec ce dernier, on peut créer des interfaces avec des styles très avancés.
Installation des modules customtkinter/pillow/bcrypt :
Accédez à votre terminal, et saisissez la commande :
❖ « python -m pip install customtkinter » : installation de customtkinter gestionnaire
des interfaces utilisateurs
❖ «python -m pip install pillow »: installation de pillow, gestionnaire des images
❖ «python -m pip install bcrypt » : installation de bcrypt gestionnaire des mots de passes
hachés
Pour commencer à travailler sur un module en python, vous devez au préalable l’importer.
Exemple : import customtkinter as ct
Le mot « as » permet de renommer le module importé. Dans le cas de notre exemple, on vient
de renommer customtkinter pas ct. Cela nous aidera à écrire ct à la place de customtkinter.
Après avoir importé le module customtkinter, bah ! l’on doit créer une variable(instance) et lui
affecter la méthode CTk() de la classe customtkinter. A partir de cette variable(instance/objet)
faire appel à la méthode(fonction) mainloop().
Remarque: tout le contenue de votre application être compris entre l’instanciation(création
de la variable) et l’appel de la méthode mainloop()
Exemple : import customtkinter as ct
App=[Link]()
#le contenue de notre application
[Link]()
Notre bout de code suivant, va présenter une petite session, contenant : des widgets
texte(CTkLabel), widgets bouton(CTkButton), widgets barre de progression(CTkProgressBar),
widget de la couleur de la session(set_appearance_mode), widget pour dimensionner la
session(geometry), widget interdisant aux utilisateurs de redimensionner la
session(resizable)
import customtkinter as ct
ct.set_appearance_mode("dark") # définition de couleur de la session
ct.set_default_color_theme("dark-blue")
#définition de la fonction gérant la barre de progression
valeur_de_progrssion = 10
def demarrage():
[Link](0)
valeur = 1/valeur_de_progrssion
etape_valeur_de_progression = 0
for i in range(valeur_de_progrssion):
for j in range(10000000): #définition de la vitesse de progression
pass
etape_valeur_de_progression +=valeur
[Link](etape_valeur_de_progression)
progressbarre.update_idletasks()
[Link]()
[Link]("python [Link]")app = [Link]()
[Link]("500x300")
[Link](False,False)
[Link]("Manage School!")
# mise en place du mot de bienvenue et positionnement sur la grille
mot = [Link](app, text="[Link]-P/N", font=("Camus MS", 20))
[Link](column=0, row=1, padx=120, pady=90)
contenu = [Link]()
progressbar = [Link](app, width=400, variable= contenu)
[Link](column = 0, row=2)
#bouton demarrer
btn_start =[Link](app, text="Démarrer", width=200, height=40, command=demarrage)
btn_start.grid(column = 0, row = 3, pady=20)
[Link]()
N.B : les versions actuelles de python contiennent déjà le SQLITE3 qui vous aidera à manipuler
les données. Et pas besoin d’exporter la base de données
Pour naviguer sur les vues vous avez plusieurs possibilités. Je vais vous apprendre une
méthode avec le os voici un exemple code :
[Link]
Import os
import customtkinter as ct
ct.set_appearance_mode("dark")
def open_sous_fenetre():
app_debut.destroy()
[Link]("python [Link]")
app_debut = [Link]()
app_debut.geometry("500x300")
app_debut.title("Fenetre principale")
text = [Link](app_debut, text="Bienvenues Fenetre principale*", font=("Arial", 50,"bold"))
[Link](pady=20)
btn_opent = [Link](app_debut, text="voir la sous fenetre", hover_color="orange",
command=open_sous_fenetre, width=200, font=("Arial",20,"bold"))
btn_opent.pack(pady=20)
app_debut.mainloop()
La methode destroy() détruit la session active
[Link]
Import os
import customtkinter as ct
ct.set_appearance_mode("dark")
def open_fenetre_principale():
[Link]()
[Link]("python [Link]")
app2 = [Link]()
[Link]("500x300")
[Link]("Fenetre principale")
text = [Link](app2, text="Bienvenues sous Fenetre *", font=("Arial", 50,"bold"))
[Link](pady=20)
btn_opent = [Link](app2, text="voir la fenetre principale", hover_color="orange",
command=open_fenetre_principale, width=200, font=("Arial",20,"bold"))
btn_opent.pack(pady=20)
app_debut.mainloop()
Les sessions que nous créons, ne sont autres que des gilles. A cela, chaque objet ou instance
créée doit être positionnée sur ladite grille. Plusieurs méthodes se chargent de cette
opération, notamment : pack(), place(), grid().
❖ Pack() : par défaut, centre l’objet et prend en argument, padx=valeur pour la position(
ou espacement) horizontale, pady=valeur pour la position( ou espacement) verticale
❖ Place() : par défaut, positionne l’instance en haut à gauche et prend en argument,
x=valeur pour la position( ou espacement) horizontale, y=valeur pour la position( ou
espacement) verticale.
❖ Grid() : par défaut, positionne l’objet en haut à gauche et prend en argument,
column=valeur pour la colonne, row=valeur pour la ligne, padx=valeur l’espacement
horizontal, pady=valeur pour l’ espacement vertical
Pour dynamiser des boutons, vous aurez besoin des connaissances sur la création des
fonctions en python. J’imagine que tout le monde sait créer une fonction. Rappel sur la
syntaxe de création d’une fonction
def nom_fornction(parametre) : # le paramètre est facultatif c’est-à-dire n’est pas obligatoire
blocks d’instructions
pour que les instruction de cette fonction s’exécutent vous devez faire appel à cette fonction
syntaxe : nom_fonction(argument)#vous mettrez l’argument(la valeur) que si lors de la
création de cette dernière vous lui aviez passé des paramètres.