PyGTK - ProgressBar-Klasse

Fortschrittsbalken werden verwendet, um dem Benutzer die visuelle Anzeige eines lang laufenden Prozesses zu geben. Das Widget gtk.ProgressBar kann in zwei Modi verwendet werden - im Prozentmodus und im Aktivitätsmodus.

Wenn es möglich ist, genau zu schätzen, wie viel Arbeit noch zu erledigen ist, kann der Fortschrittsbalken im Prozentmodus verwendet werden, und der Benutzer sieht einen inkrementellen Balken, der den Prozentsatz des abgeschlossenen Auftrags anzeigt. Wenn andererseits der zu erledigende Arbeitsaufwand genau bestimmt werden kann, wird der Fortschrittsbalken im Aktivitätsmodus verwendet, in dem der Balken die Aktivität anzeigt, indem ein Block angezeigt wird, der sich hin und her bewegt.

Der folgende Konstruktor initialisiert das Widget der Klasse gtk.ProgressBar -

pb = gtk.ProgressBar()

gtk.ProgressBar verwendet die folgenden Methoden zum Verwalten der Funktionalität:

  • ProgressBar.pulse()- Dadurch wird der Fortschrittsbalken verschoben, um anzuzeigen, dass einige Fortschritte erzielt wurden, aber Sie wissen nicht, wie viel. Diese Methode ändert auch den Fortschrittsbalkenmodus in "Aktivitätsmodus", in dem ein Block hin und her springt.

  • ProgressBar.set_fraction(fraction) - Dadurch füllt der Fortschrittsbalken den durch angegebenen Teil des Balkens aus fraction. Der Wert vonfraction sollte zwischen 0,0 und 1,0 liegen.

  • ProgressBar.set_pulse_setup() - Hiermit wird der Teil festgelegt (angegeben durch fraction) der Gesamtlänge des Fortschrittsbalkens, um den Sprungblock für jeden Aufruf an den zu verschieben pulse() Methode.

  • ProgressBar.set_orientation()- Hiermit wird die Ausrichtung des Fortschrittsbalkens festgelegt. Es kann auf eine der folgenden Konstanten gesetzt werden:

    • gtk.PROGRESS_LEFT_TO_RIGHT

    • gtk.PROGRESS_RIGHT_TO_LEFT

    • gtk.PROGRESS_BOTTOM_TO_TOP

    • gtk.PROGRESS_TOP_TO_BOTTOM

Im folgenden Programm wird das Widget gtk.ProgressBar im Aktivitätsmodus verwendet. Daher wird die Anfangsposition des Fortschritts durch die auf 0,0 gesetztset_fraction() Methode.

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

Um den Fortschritt nach 100 Millisekunden um 1 Prozent zu erhöhen, wird ein Zeitgeberobjekt deklariert und eine Rückruffunktion eingerichtet, die alle 100 ms aufgerufen wird, damit der Fortschrittsbalken aktualisiert wird.

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

Hier, progress_timeout()ist die Rückruffunktion. Es erhöht den Parameter desset_fraction() Methode um 1 Prozent und aktualisiert den Text in der Fortschrittsleiste, um den Prozentsatz der Fertigstellung anzuzeigen.

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

Beispiel

Beachten Sie den folgenden Code -

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()

Der obige Code generiert die folgende Ausgabe:

Um den Fortschrittsbalken im Aktivitätsmodus zu verwenden, ändern Sie die Rückruffunktion wie folgt und führen Sie - aus.

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

Die Hin- und Herbewegung eines Blocks in der Fortschrittsanzeige zeigt den Fortschritt der Aktivität an.