📅  最后修改于: 2020-11-08 08:01:11             🧑  作者: Mango
进度条用于向用户直观显示长时间运行的过程。 gtk.ProgressBar小部件可以在两种模式下使用-百分比模式和活动模式。
当可以准确估计要完成的工作量时,可以在百分比模式下使用进度条,并且用户会看到显示进度条的增量条。另一方面,如果可以准确地确定要完成的工作量,则在活动模式下使用进度条,在该状态下,该条通过显示来回移动的块来显示活动。
以下构造函数初始化gtk.ProgressBar类的窗口小部件-
pb = gtk.ProgressBar()
gtk.ProgressBar使用以下方法来管理功能-
ProgressBar.pulse() -这将微调进度条以指示已取得一些进展,但您不知道有多少。此方法还将进度条模式更改为“活动模式”,在此模式下,块会来回跳动。
ProgressBar.set_fraction(fraction) -这将使进度条“填充”由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小部件在活动模式下使用。因此,进度的初始位置通过set_fraction()方法设置为0.0。
self.pb = gtk.ProgressBar()
self.pb.set_text("Progress")
self.pb.set_fraction(0.0)
为了在100毫秒后将进度增加1%,声明了一个计时器对象,并设置了一个回调函数,每隔100 ms调用一次,以便更新进度条。
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
进度栏中的块的来回移动将显示活动的进度。