Учебники

PyGTK — класс ProgressBar

Индикаторы выполнения используются, чтобы дать пользователю визуальную индикацию длительного процесса. Виджет gtk.ProgressBar можно использовать в двух режимах — в процентном режиме и в режиме активности.

Когда можно точно оценить объем ожидаемой работы, индикатор выполнения может использоваться в процентном режиме, и пользователь видит добавочную панель, отображающую процент выполненного задания. Если, с другой стороны, объем работы, подлежащей выполнению, может быть точно определен, индикатор выполнения используется в режиме активности, в котором панель отображает активность, отображая блок, перемещающийся вперед и назад.

Следующий конструктор инициализирует виджет класса gtk.ProgressBar —

pb = gtk.ProgressBar()

gtk.ProgressBar использует следующие методы для управления функциональностью —

  • ProgressBar.pulse () — это подталкивает индикатор выполнения, чтобы показать, что был достигнут некоторый прогресс, но вы не знаете, сколько. Этот метод также изменяет режим индикатора выполнения на «режим активности», когда блок подпрыгивает вперед и назад.

  • ProgressBar.set_fraction (фракция) — это заставляет индикатор выполнения «заполнять» часть бара, заданную дробью . Значение дроби должно быть между 0,0 и 1,0.

  • ProgressBar.set_pulse_setup () — устанавливает часть (указанную в виде дроби ) общей длины индикатора выполнения для перемещения подпрыгивающего блока при каждом вызове метода pulse () .

  • ProgressBar.set_orientation () — устанавливает ориентацию индикатора выполнения. Может быть установлена ​​одна из следующих констант:

    • gtk.PROGRESS_LEFT_TO_RIGHT

    • gtk.PROGRESS_RIGHT_TO_LEFT

    • gtk.PROGRESS_BOTTOM_TO_TOP

    • gtk.PROGRESS_TOP_TO_BOTTOM

ProgressBar.pulse () — это подталкивает индикатор выполнения, чтобы показать, что был достигнут некоторый прогресс, но вы не знаете, сколько. Этот метод также изменяет режим индикатора выполнения на «режим активности», когда блок подпрыгивает вперед и назад.

ProgressBar.set_fraction (фракция) — это заставляет индикатор выполнения «заполнять» часть бара, заданную дробью . Значение дроби должно быть между 0,0 и 1,0.

ProgressBar.set_pulse_setup () — устанавливает часть (указанную в виде дроби ) общей длины индикатора выполнения для перемещения подпрыгивающего блока при каждом вызове метода pulse () .

ProgressBar.set_orientation () — устанавливает ориентацию индикатора выполнения. Может быть установлена ​​одна из следующих констант:

gtk.PROGRESS_LEFT_TO_RIGHT

gtk.PROGRESS_RIGHT_TO_LEFT

gtk.PROGRESS_BOTTOM_TO_TOP

gtk.PROGRESS_TOP_TO_BOTTOM

В следующей программе виджет gtk.ProgressBar используется в режиме активности. Следовательно, начальная позиция прогресса устанавливается равной 0.0 методом set_fraction () .

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

Чтобы увеличить прогресс на 1 процент после 100 миллисекунд, объявляется объект таймера и настраивается функция обратного вызова, которая будет вызываться через каждые 100 мс, чтобы обновлялся индикатор выполнения.

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

Здесь progress_timeout () является функцией обратного вызова. Он увеличивает параметр метода set_fraction () на 1 процент и обновляет текст в индикаторе выполнения, отображая процент выполнения.

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

пример

Соблюдайте следующий код —

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

Приведенный выше код сгенерирует следующий вывод:

ПрогрессБар Демо

Чтобы использовать индикатор выполнения в режиме активности, измените функцию обратного вызова на следующую и запустите —

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

Движение вперед-назад блока внутри индикатора выполнения покажет ход действия.