- wxPython 教程
- wxPython - 首頁
- wxPython - 簡介
- wxPython - 環境
- wxPython - Hello World
- wxPython - GUI 構建工具
- wxPython - 主要類
- wxPython - 事件處理
- wxPython - 佈局管理
- wxPython - 按鈕
- wxPython - 可停靠視窗
- 多文件介面
- wxPython - 繪圖 API
- wxPython - 拖放
- wxPython 資源
- wxPython - 快速指南
- wxPython - 有用資源
- wxPython - 討論
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()
以上程式碼產生以下輸出:
wxpython_major_classes.htm
廣告