鍍金池/ 教程/ Python/ wxPython Guage類
wxPython GUI構(gòu)建工具wxFormBuilder
wxPython StaticText類
WxPython教程
wxPython可??看翱?/span>
wxPython ComboBox & Choice類
wxPython FlexiGridSizer布局
wxPython入門(Hello World)
wxPython RadioButton & RadioBox類
wxPython拖放
wxPython HTMLWindow類
wxPython ToolBar類
wxPython GridBagSizer布局
wxPython Dialog類
wxPython布局管理
wxPython TextCtrl類
wxPython開發(fā)環(huán)境安裝
wxPython Slider類
wxPython CheckBox類
wxPython Major類
wxPython GridSizer布局
wxPython事件處理
wxPython SplitterWindow類
Menu Item, Menu & MenuBar類
wxPython Button控件
wxPython StaticBoxSizer布局
wxPython Guage類
wxPython Frame類
wxPython多文檔界面
wxPython Panel類
wxPython BoxSizer布局
wxPython繪圖API

wxPython Guage類

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

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

在確定模式,進(jìn)度位置會(huì)定期更新。在不確定模式,調(diào)用 Pulse() 函數(shù)將更新進(jìn)度條。
Wx.Gauge類的構(gòu)造函數(shù)的參數(shù)是必需的 - 
wx.Gauge(parent, id, range, pos, size, style)
range 參數(shù)設(shè)置為表上的最大值。在不確定模式,則忽略此參數(shù)。
Gauge類可能的style參數(shù) -
S.N.
參數(shù)和說明
1

wx.GA_HORIZONTAL

進(jìn)度條的橫向布局
2

wx.GA_VERTICAL

進(jìn)度條的垂直布局
3

wx.GA_SMOOTH

平滑的進(jìn)度條使用一個(gè)像素寬度的更新步驟
4

wx.GA_TEXT

顯示當(dāng)前值在百分比形式

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

S.N.
方法和說明
1

GetRange()

返回gauge的最大值
2

SetRange()

設(shè)置gauge的最大值
3

GetValue()

返回當(dāng)gauge的值

4

SetValue()

以編程方式設(shè)置當(dāng)前值
5

Pulse()

切換gauge到不確定模式

實(shí)例

在下面的例子中,水平Gauge對象是添加在垂直的盒子大小測定器(sizer)的面板中。
self.gauge = wx.Gauge(pnl, range = 20, size = (250, 25), style = wx.GA_HORIZONTAL)
也有它的點(diǎn)擊事件與處理程序功能相關(guān)的按鈕。
self.btn1 = wx.Button(pnl, label = "Start") 
self.Bind(wx.EVT_BUTTON, self.OnStart, self.btn1)
處理函數(shù) OnStart()每一秒后計(jì)算更新的進(jìn)展情況。
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()
上面的代碼產(chǎn)生下面的輸出 -