wxPython - 儀表類



wxPython 中的進度條控制元件稱為Gauge。Wx.Gauge 類物件顯示一個垂直或水平條,以圖形方式顯示遞增的數量。它通常用於演示檔案的複製或軟體的安裝等過程的進度。

Wx.Gauge 控制元件可用於確定模式和不確定模式。當完成任何操作所需的時間可以相當準確地確定時,儀表進度條將顯示已完成任務的百分比。但是,在不確定模式下,它僅指示該過程正在進行。

在確定模式下,進度位置會定期更新。在不確定模式下,呼叫 Pulse() 函式將更新進度條。

Wx.Gauge 類建構函式所需的引數為:

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

range 引數設定儀表的最大值。在不確定模式下,忽略此引數。

Gauge 類的可能樣式引數為:

序號 引數及說明
1

wx.GA_HORIZONTAL

進度條的水平佈局

2

wx.GA_VERTICAL

進度條的垂直佈局

3

wx.GA_SMOOTH

使用一個畫素寬的更新步長平滑進度條

4

wx.GA_TEXT

以百分比顯示當前值

此類的一些重要方法列在下表中:

序號 方法及說明
1

GetRange()

返回儀表的最大值

2

SetRange()

設定儀表的最大值

3

GetValue()

返回儀表的當前值

4

SetValue()

以程式設計方式設定當前值

5

Pulse()

將儀表切換到不確定模式

示例

在以下示例中,一個水平 Gauge 物件被新增到面板的垂直框尺寸器中。

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

以上程式碼產生以下輸出:

Gauge Output
wxpython_major_classes.htm
廣告

© . All rights reserved.