PyGTK - Classe ProgressBar

Les barres de progression sont utilisées pour donner à l'utilisateur l'indication visuelle d'un processus de longue durée. Le widget gtk.ProgressBar peut être utilisé dans deux modes: le mode pourcentage et le mode activité.

Lorsqu'il est possible d'estimer avec précision la quantité de travail en attente d'être terminée, la barre de progression peut être utilisée en mode pourcentage, et l'utilisateur voit une barre incrémentielle indiquant le pourcentage de travail terminé. Si en revanche, la quantité de travail à réaliser peut être déterminée avec précision, la barre de progression est utilisée en mode activité dans lequel, la barre montre l'activité en affichant un bloc en va-et-vient.

Le constructeur suivant initialise le widget de la classe gtk.ProgressBar -

pb = gtk.ProgressBar()

gtk.ProgressBar utilise les méthodes suivantes pour gérer les fonctionnalités -

  • ProgressBar.pulse()- Cela pousse la barre de progression pour indiquer que des progrès ont été réalisés, mais vous ne savez pas combien. Cette méthode modifie également le mode de la barre de progression en «mode activité», où un bloc rebondit d'avant en arrière.

  • ProgressBar.set_fraction(fraction) - Cela amène la barre de progression à "remplir" la partie de la barre spécifiée par fraction. La valeur defraction doit être compris entre 0,0 et 1,0.

  • ProgressBar.set_pulse_setup() - Ceci définit la partie (spécifiée par fraction) de la longueur totale de la barre de progression pour déplacer le bloc de renvoi de chaque appel vers le pulse() méthode.

  • ProgressBar.set_orientation()- Ceci définit l'orientation de la barre de progression. Il peut être défini sur l'une des constantes suivantes:

    • gtk.PROGRESS_LEFT_TO_RIGHT

    • gtk.PROGRESS_RIGHT_TO_LEFT

    • gtk.PROGRESS_BOTTOM_TO_TOP

    • gtk.PROGRESS_TOP_TO_BOTTOM

Dans le programme suivant, le widget gtk.ProgressBar est utilisé en mode activité. Par conséquent, la position initiale de progression est fixée à 0,0 par leset_fraction() méthode.

self.pb = gtk.ProgressBar()
self.pb.set_text("Progress")
self.pb.set_fraction(0.0)

Afin d'augmenter la progression de 1 pour cent après 100 millisecondes, un objet timer est déclaré et une fonction de rappel est configurée pour être appelée toutes les 100 ms afin que la barre de progression soit mise à jour.

self.timer = gobject.timeout_add (100, progress_timeout, self)

Ici, progress_timeout()est la fonction de rappel. Il incrémente le paramètre duset_fraction() méthode de 1 pour cent et met à jour la barre de texte en cours pour afficher le pourcentage d'achèvement.

def progress_timeout(pbobj):
   new_val = pbobj.pb.get_fraction() + 0.01
   pbobj.pb.set_fraction(new_val)
   pbobj.pb.set_text(str(new_val*100)+" % completed")
   return True

Exemple

Respectez le code suivant -

import gtk, gobject
   
def progress_timeout(pbobj):
   new_val = pbobj.pb.get_fraction() + 0.01
   pbobj.pb.set_fraction(new_val)
   pbobj.pb.set_text(str(new_val*100)+" % completed")
   return True

class PyApp(gtk.Window):
   
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Progressbar demo")
      self.set_size_request(300,200)
      self.set_position(gtk.WIN_POS_CENTER)
		
      fix = gtk.Fixed()
      self.pb = gtk.ProgressBar()
      self.pb.set_text("Progress")
      self.pb.set_fraction(0.0)
		
      fix.put(self.pb,80,100)
      self.add(fix)
      self.timer = gobject.timeout_add (100, progress_timeout, self)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
PyApp()
gtk.main()

Le code ci-dessus générera la sortie suivante -

Pour utiliser la barre de progression en mode activité, changez la fonction de rappel comme suit et exécutez -

def progress_timeout(pbobj):
   pbobj.pb.pulse()
   return True

Le mouvement de va-et-vient d'un bloc à l'intérieur de la barre de progression montrera la progression de l'activité.