wxPython – Guage类

wxPython – Guage类

wxPython中的进度条控件被称为 Gauge。 Wx.Gauge类对象显示一个垂直或水平条,它以图形方式显示递增的数量。它通常用于展示一个过程的进展,如复制文件或安装软件。

Wx.Gauge控件 可以在确定和不确定的模式下使用。当完成任何操作所需的时间可以相当准确地确定时,仪表盘进度条显示完成任务的百分比。然而,在不确定模式下,它只表示该过程正在进行。

在确定模式下,进度位置会定期更新。在不确定模式下,调用Pulse()函数将更新进度条。

Wx.Gauge类构造函数所需的参数是

wx.Gauge(parent, id, range, pos, size, style)

范围参数设定了仪表的最高值。在不确定的模式下,这个参数被忽略。

仪表类可能的样式参数是 −

S.N. 参数和说明
1 wx.GA_HORIZONTAL 进度条的水平布局
2 wx.GA_VERTICAL 进度条的垂直布局
3 wx.GA_SMOOTH 以一个像素宽的更新步骤平滑进度条
4 wx.GA_TEXT 以百分比显示当前值

该类的一些重要方法在下表中列出 –

S.N. 方法和描述
1 GetRange() 返回仪表的最大值
2 SetRange() 设置仪表的最大值
3 GetValue() 返回仪表的当前值
4 SetValue() 以编程方式设置当前值
5 Pulse() 将仪表切换到不确定的模式

例子

在下面的例子中,一个水平的Gauge对象被添加到panel的垂直盒状尺寸中。

self.gauge = wx.Gauge(pnl, range = 20, size = (250, 25), style = wx.GA_HORIZONTAL)

还有一个按钮,其点击事件与一个处理函数相关。

self.btn1 = wx.Button(pnl, label = "Start") 
self.Bind(wx.EVT_BUTTON, self.OnStart, self.btn1)

处理函数OnStart()每隔一秒就会更新仪表的进度。

def OnStart(self, e): 
   while True: 
      time.sleep(1); 
      self.count = self.count + 1 
      self.gauge.SetValue(self.count) 

      if self.count >= 20: 
         print "end" 
         return 

该例子的完整代码如下 —

import wx 
import time 
class Mywin(wx.Frame): 

   def __init__(self, parent, title): 
      super(Mywin, self).__init__(parent, title = title,size = (300,200))  
      self.InitUI() 

   def InitUI(self):    
      self.count = 0 
      pnl = wx.Panel(self) 
      vbox = wx.BoxSizer(wx.VERTICAL)

      hbox1 = wx.BoxSizer(wx.HORIZONTAL) 
      hbox2 = wx.BoxSizer(wx.HORIZONTAL)

      self.gauge = wx.Gauge(pnl, range = 20, size = (250, 25), style =  wx.GA_HORIZONTAL) 
      self.btn1 = wx.Button(pnl, label = "Start") 
      self.Bind(wx.EVT_BUTTON, self.OnStart, self.btn1) 

      hbox1.Add(self.gauge, proportion = 1, flag = wx.ALIGN_CENTRE) 
      hbox2.Add(self.btn1, proportion = 1, flag = wx.RIGHT, border = 10) 

      vbox.Add((0, 30)) 
      vbox.Add(hbox1, flag = wx.ALIGN_CENTRE) 
      vbox.Add((0, 20)) 
      vbox.Add(hbox2, proportion = 1, flag = wx.ALIGN_CENTRE) 
      pnl.SetSizer(vbox) 

      self.SetSize((300, 200)) 
      self.Centre() 
      self.Show(True)   

   def OnStart(self, e): 
      while True: 
         time.sleep(1); 
         self.count = self.count + 1 
         self.gauge.SetValue(self.count) 

         if self.count >= 20: 
            print "end" 
            return 

ex = wx.App() 
Mywin(None,'wx.Gauge') 
ex.MainLoop()

上述代码产生的输出结果如下 –

wxPython - Guage类

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程