当前位置: 首页 > 文档资料 > PyGTK 中文教程 >

ProgressBar 类(ProgressBar Class)

优质
小牛编辑
120浏览
2023-12-01

进度条用于向用户提供长时间运行过程的可视指示。 gtk.ProgressBar小部件可以在两种模式下使用 - 百分比模式和活动模式。

当可以准确估计待完成的工作量有多少时,可以在百分比模式下使用进度条,用户可以看到显示已完成作业百分比的增量栏。 另一方面,如果可以准确地确定要完成的工作量,则在活动模式中使用进度条,其中条通过显示来回移动的块来显示活动。

以下构造函数初始化gtk.ProgressBar类的小部件 -

pb = gtk.ProgressBar()

gtk.ProgressBar使用以下方法来管理功能 -

  • ProgressBar.pulse() - 这会轻推进度条以指示已经取得了一些进展,但您不知道有多少进展。 此方法还将进度条模式更改为“活动模式”,其中块来回反弹。

  • ProgressBar.set_fraction(fraction) - 这会导致进度条“填充”由fraction指定的条形fractionfraction值应介于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

例子 (Example)

请注意以下代码 -

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

上面的代码将生成以下输出 -

ProgressBar演示

要在活动模式下使用进度条,请将回调函数更改为以下内容并运行 -

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

进度条内的块的来回移动将显示活动的进度。

ProgressBar演示