wxPython Guage類

進度條控件在wxPython中被稱爲測量儀(Gauge)。Wx.Gauge類對象表示垂直或水平條,其中以圖形方式顯示遞增量。它通常用於展示像複製文件或安裝軟件的處理進程。

Wx.Gauge控件可以在確定的以及不確定模式中使用。當完成任何操作所需的時間可以被相當精確地確定,測量儀進度條顯示已完成任務的百分比。然而如果在不確定模式,它只是表示該過程正在進行中。

在確定模式,進度位置會定期更新。在不確定模式,調用 Pulse() 函數將更新進度條。

Wx.Gauge類的構造函數的參數是必需的 - 

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

range 參數設置爲表上的最大值。在不確定模式,則忽略此參數。

Gauge類可能的style參數 -

S.N.

參數和說明

1

wx.GA_HORIZONTAL

進度條的橫向佈局

2

wx.GA_VERTICAL

進度條的垂直佈局

3

wx.GA_SMOOTH

平滑的進度條使用一個像素寬度的更新步驟

4

wx.GA_TEXT

顯示當前值在百分比形式

此類一些的重要的方法列於下表中 −

S.N.

方法和說明

1

GetRange()

返回gauge的最大值

2

SetRange()

設置gauge的最大值

3

GetValue()

返回當gauge的值

4

SetValue()

以編程方式設置當前值

5

Pulse()

切換gauge到不確定模式

實例

在下面的例子中,水平Gauge對象是添加在垂直的盒子大小測定器(sizer)的面板中。

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 - www.yiibai.com')
ex.MainLoop()

上面的代碼產生下面的輸出 -

wxPython