Créer un retour visuel efficace pour l’utilisateur lors de tâches longues est souvent un défi dans le développement d’interfaces graphiques.
Sans indication claire de la progression, les utilisateurs peuvent se sentir perdus ou croire que l’application est bloquée.
L’article propose l’utilisation du widget Progressbar de Tkinter pour enrichir vos interfaces graphiques, offrant une solution visuelle efficace et intuitive.
Créez des interfaces graphiques interactives avec Python et TKinter !
Barre de progression Tkinter : Utilisation
Dans le développement d’une interface graphique (GUI), il est crucial de fournir un retour visuel à l’utilisateur, en particulier lors de l’exécution de tâches longues ou complexes. Une barre de progression joue un rôle essentiel en indiquant visuellement le statut d’une opération en cours, ce qui rend l’application plus interactive et maintient l’utilisateur informé. Dans cette section, nous explorerons comment utiliser le widget Progressbar de la bibliothèque Tkinter pour enrichir vos interfaces.
Création de la barre de progression
Pour commencer, nous allons créer une fenêtre simple avec une barre de progression vide. Voici un exemple de code qui initialise l’application et affiche une barre de progression au centre :
from tkinter import *
from tkinter import ttk
# Création de la fenêtre principale
root = Tk()
root.title("Mon application")
root.geometry("800x600+600+200")
# Création de la barre de progression
progress = ttk.Progressbar(root)
progress.pack()
# Boucle principale de l'application
root.mainloop()
En exécutant ce code, vous obtiendrez une fenêtre avec une barre de progression vide, prête à être mise à jour pour indiquer la progression d’une tâche, comme il est montré dans la figure suivante :
Personnaliser le widget Progressbar Tkinter
Le widget Progressbar de Tkinter permet de contrôler plusieurs aspects de son apparence et de son comportement grâce à divers attributs. Voici les plus courants :
L’attribut value :
Cet attribut spécifie le niveau de remplissage de la barre. Par exemple, pour initialiser la barre à 30 % de remplissage, vous pouvez utiliser le code suivant :
from tkinter import *
from tkinter import ttk
root = Tk()
root.title("Barre de progression avec value")
# Barre de progression initialisée à 30 %
progress_bar = ttk.Progressbar(root,value=30,length=200)
progress_bar.pack(pady=20)
root.mainloop()
Voici l’exemple d’exécution de ce code qui affiche une barre de progression remplie à 30 % :
L’attribut orient :
L’orientation par défaut de la barre de progression est horizontale (HORIZONTAL), mais vous pouvez la rendre verticale (VERTICAL) en changeant cet attribut :
from tkinter import *
from tkinter import ttk
root = Tk()
root.title("Barre de progression verticale")
# Barre de progression verticale
progress_bar = ttk.Progressbar(root,orient=VERTICAL,length=200)
progress_bar.pack(pady=20)
root.mainloop()
Voici l’exemple d’exécution de ce code qui montre une barre de progression
verticale :
length :
La longueur de la barre de progression peut être ajustée. Par défaut, elle est souvent courte, mais vous pouvez la définir à 400 pixels, par exemple :
from tkinter import *
from tkinter import ttk
root = Tk()
root.title("Barre de progression avec longueur ajustée")
# Barre de progression avec une longueur de 400 pixels
progress_bar = ttk.Progressbar(root,length=400)
progress_bar.pack(pady=20)
root.mainloop()
Voici l’exemple d’exécution de ce code qui crée une barre de progression plus longue, avec une longueur de 400 pixels :
Mise à jour dynamique : Barre interactive Tkinter
Mise à jour de la barre de progression
Pour rendre la barre de progression interactive, nous allons ajouter un bouton qui, à chaque clic, incrémentera la progression de la barre de 10 %. Voici un exemple de code pour illustrer cette fonctionnalité :
from tkinter import *
from tkinter import ttk
root = Tk()
root.title("Barre de progression avec longueur ajustée")
# Barre de progression avec une longueur de 400 pixels
progress_bar = ttk.Progressbar(root,length=400)
progress_bar.pack(pady=20)
i = 0
defupdate():
global i
i += 10
progress_bar.config(value=i)
# Création du bouton et association de la fonction
button = Button(root,text="Avancer",command=update)
button.pack()
root.mainloop()
Dans cet exemple, chaque clic sur le bouton fait avancer la barre de 10 %, offrant un retour visuel immédiat à l’utilisateur. La barre se remplit progressivement, indiquant clairement l’avancement. Voici un aperçu du résultat obtenu :
À chaque clic sur le bouton « Avancer », la barre progresse de 10 %, fournissant ainsi une indication visuelle continue de l’évolution de la tâche.
Affichage de la progression en pourcentage avec un Label
Pour rendre l’expérience utilisateur encore plus interactive, vous pouvez afficher la progression sous forme de pourcentage à l’aide d’un Label qui se met à jour en même temps que la barre de progression :
from tkinter import *
from tkinter import ttk
root = Tk()
root.title("Barre de progression avec longueur ajustée")
# Barre de progression avec une longueur de 400 pixels
progress_bar = ttk.Progressbar(root,length=400)
progress_bar.pack(pady=20)
label = Label(root,text="0%")
label.pack()
i=0
defupdate():
global i
i += 10
progress_bar.config(value=i)
label.config(text=f"{i}%")
button = Button(root,text="Avancer",command=update)
button.pack()
root.mainloop()
Dans cet exemple, le Label affiche en temps réel le pourcentage de progression actuel, offrant ainsi à l’utilisateur une indication précise et intuitive de l’état d’avancement. Ce retour visuel améliore l’expérience globale de l’utilisateur en lui permettant de suivre facilement la progression de la tâche. Voici un aperçu du résultat de ce programme :
Tkinter Progressbar : Mode indéterminé expliqué
Il arrive parfois que la durée exacte d’une tâche ne puisse être estimée à l’avance. Dans ces situations, le mode indéterminé de la barre de progression devient particulièrement utile. Ce mode permet à la barre de progression d’effectuer un mouvement de va-et-vient continu, informant ainsi l’utilisateur que le processus est en cours, même si l’avancement précis ne peut pas être déterminé. Voici comment activer ce mode :
progress.config(mode='indeterminate')
progress.start(10)# La barre bouge toutes les 10 millisecondes
Le mouvement continu de la barre indique que l’application travaille sur une tâche en arrière-plan, sans fournir d’information précise sur l’étape atteinte ou le temps restant. Cela assure à l’utilisateur que l’application n’est pas figée. Voici un exemple complet de l’utilisation du mode indéterminé :
import tkinter as tk
from tkinter import ttk
# Création de la fenêtre principale
root = tk.Tk()
root.title("Mode indéterminé")
# Création de la barre de progression en mode indéterminé
progress = ttk.Progressbar(root,mode='indeterminate')
progress.pack(pady=20)
# Démarrer la barre de progression en mode indéterminé
progress.start()
# Boucle principale de l'application
root.mainloop()
Cet exemple montre comment créer une barre de progression en mode indéterminé avec Tkinter. La barre de progression est initialisée avec le paramètre mode=’indeterminate’ , ce qui permet un mouvement continu de va-et-vient pour indiquer qu’un processus est en cours sans afficher d’avancement spécifique. La méthode progress.start() est utilisée pour démarrer l’animation de la barre, et l’application continue de fonctionner grâce à la boucle principale root.mainloop() .
Voici le résultat d’exécution de ce code :
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Comment créer une barre de progression dans Tkinter ?
Comment personnaliser les attributs de la barre de progression ?
Comment mettre à jour dynamiquement une barre de progression ?
Comment afficher la progression en pourcentage ?
Quand utiliser le mode indéterminé pour une barre de progression ?
Conclusion
En intégrant une barre de progression dans vos applications Tkinter, vous améliorez l’expérience utilisateur en leur offrant un retour visuel clair. Quelle autre fonctionnalité de Tkinter pourriez-vous explorer pour enrichir vos interfaces graphiques ?