- 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
广告