PyGTK - класс ProgressBar
Индикаторы выполнения используются, чтобы дать пользователю визуальную индикацию длительного процесса. Виджет gtk.ProgressBar можно использовать в двух режимах - процентном режиме и режиме активности.
Когда есть возможность точно оценить, какой объем работы ожидает завершения, индикатор выполнения можно использовать в процентном режиме, и пользователь видит постепенную шкалу, показывающую процент выполненного задания. Если, с другой стороны, объем работы, которую необходимо выполнить, можно точно определить, индикатор выполнения используется в режиме активности, в котором полоса показывает активность, отображая блок, перемещающийся вперед и назад.
Следующий конструктор инициализирует виджет класса gtk.ProgressBar:
pb = gtk.ProgressBar()
gtk.ProgressBar использует следующие методы для управления функциональностью:
ProgressBar.pulse()- Это подталкивает индикатор выполнения, чтобы указать, что был достигнут некоторый прогресс, но вы не знаете, насколько. Этот метод также меняет режим индикатора выполнения на «режим активности», когда блок подпрыгивает вперед и назад.
ProgressBar.set_fraction(fraction) - Это приводит к тому, что индикатор выполнения "заполняет" часть полосы, указанную fraction. Значениеfraction должно быть от 0,0 до 1,0.
ProgressBar.set_pulse_setup() - Устанавливает часть (указанную fraction) от общей длины индикатора выполнения, чтобы переместить отскакивающий блок для каждого вызова в 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,0set_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
Движение блока внутри индикатора выполнения вперед и назад будет показывать прогресс действия.