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 小部件用于活动模式。 因此,进度的初始位置通过 set_fraction() 方法设置为 0.0。
self.pb = gtk.ProgressBar()
self.pb.set_text("Progress")
self.pb.set_fraction(0.0)
为了在 100 毫秒后将进度递增 1%,声明了一个计时器对象,并设置了一个回调函数,每 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
进度条内块的来回移动将显示活动的进度。

