Il peut arriver que pour certaines tâches un suivi de la progression soit
utile (sur certaines longues opérations cela peut éviter la tentation du
gestionnaire de tâche....).
Voici un peu plus de détails, pour faire
suite à cet article.
if this article is not in your language, use the Google Translate
widget (bottom of page for Mobile version)⬈
Voici un exemple d'implémentation d'une barre de progression, celle-ci
s'effectue au travers d'une liste d'opérations à traiter.
l'ajout d'un message personnalisé sous la barre de progression est possible en passant le message en
argument comme suivant
-
Le chargement
plusieurs façons de charger le module :
-
soit en important la librairie dll (uniquement avec IronPython)
from System.IO import Path
fileDll = IN[0]
folderDll = Path.GetDirectoryName(fileDll)
sys.path.append(folderDll)
clr.AddReferenceToFileAndPath(fileDll)
import ProgressBarUtils
from ProgressBarUtils import ProgressBarUtils as pgb
-
soit en important le fichier script Python
"ProgressBarUtils.py" comme module (IronPython ou CPython/Pythonnet)
import sys
import clr
import System
from System.IO import Path
file_PathPy = IN[0]
folderPy = Path.GetDirectoryName(file_PathPy)
sys.path.append(folderPy)
import ProgressBarUtils
from ProgressBarUtils import ProgressBarUtils as pgb
-
soit, en implémentent le code source dans un nœud Python et
affectant la Classe à la variable OUT (IronPython ou CPython/Pythonnet)
Note: les moteurs Pythons des 2 nœuds doivent être
identique
-
L'implémentation (constructeur)
plusieurs façons de charger le module :
- soit en important la librairie dll (uniquement avec IronPython)
from System.IO import Path
fileDll = IN[0]
folderDll = Path.GetDirectoryName(fileDll)
sys.path.append(folderDll)
clr.AddReferenceToFileAndPath(fileDll)
import ProgressBarUtils
from ProgressBarUtils import ProgressBarUtils as pgb
-
soit en important le fichier script Python
"ProgressBarUtils.py" comme module (IronPython ou CPython/Pythonnet)
import sys import clr import System from System.IO import Path file_PathPy = IN[0] folderPy = Path.GetDirectoryName(file_PathPy) sys.path.append(folderPy) import ProgressBarUtils from ProgressBarUtils import ProgressBarUtils as pgb
-
soit, en implémentent le code source dans un nœud Python et
affectant la Classe à la variable OUT (IronPython ou CPython/Pythonnet)
Note: les moteurs Pythons des 2 nœuds doivent être
identique
Le constructeur de la barre de progression s'effectue au travers d'une liste d'opérations à traiter et d'un Context Manager de la manière suivante :
with pgb.MyProgressBroadcaster(nombreTotalExecution, "Titre Fentre") as broadcaster:
Puis la méthode
broadcaster.onChange.next_p()
permet d'incrémenter la barre de progression, via un custom "event hook", plus de détail ici)
#example of list to processing
lstProcessing = list(range(1000))
out = []
with pgb.MyProgressBroadcaster(len(lstProcessing), "Title Of ProgressBar") as broadcaster:
for i in lstProcessing:
#some operations with long duration
#
#
# increment Progress Bar via EventHook
broadcaster.onChange.next_p()
3. Message personnalisé (MAJ 09/2022)
broadcaster.onChange.next_p("my message")
Note : un bouton pour quitter la fenêtre est présent dans le code mais
volontairement désactivé
Aperçu avec un exemple de plan de cotation plancher (maquette Structure
liée)
0 commentaires:
Enregistrer un commentaire