PyGTK 进度条类

PyGTK 进度条类

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

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

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

pb = gtk.ProgressBar()

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

  • ProgressBar.pulse() − 这个方法会推动进度条,以表明已经取得了一些进展,但是你不知道有多少进展。此方法也会将进度条模式更改为“活动模式”,其中一个块会来回弹动。

  • ProgressBar.set_fraction(fraction) − 这会使进度条“填充”由 fraction 指定的部分。fraction的值应该介于0.0和1.0之间。

  • ProgressBar.set_pulse_step() − 这个设置了每次调用 pulse() 方法时移动弹动块的进度条总长度的部分(由 fraction 指定)。

  • 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() 是回调函数。它通过1%递增 set_fraction() 方法的参数,并更新进度条中的文本以显示完成的百分比。

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

上述代码将生成以下输出 −

PyGTK 进度条类

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

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

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

PyGTK 进度条类

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程