wx.Gauge 是一个用在有漫长任务要处理时 (比如程序安装、导出 PDF 等)。
专题教程:wxpython中文教程
wx.Gauge 样式有:
wx.GA_HORIZONTAL
wx.GA_VERTICAL
例子:
 
#!/usr/bin/python
#coding=utf-8
#gauge.py
import wx
class MyFrame(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title)
        self.timer = wx.Timer(self, -1)
        self.count = 0
        self.Bind(wx.EVT_TIMER, self.OnTimer, self.timer)
        panel = wx.Panel(self, -1)
        vbox = wx.BoxSizer(wx.VERTICAL)
        hbox1 = wx.BoxSizer(wx.HORIZONTAL)
        hbox2 = wx.BoxSizer(wx.HORIZONTAL)
        hbox3 = wx.BoxSizer(wx.HORIZONTAL)
        
        self.gauge = wx.Gauge(panel, -1, 50, size=(250, 25))
        self.btn1 = wx.Button(panel, wx.ID_OK)
        self.btn2 = wx.Button(panel, wx.ID_STOP)
        self.text = wx.StaticText(panel, -1, '任务有待完成')
        
        self.Bind(wx.EVT_BUTTON, self.OnOk, self.btn1)
        self.Bind(wx.EVT_BUTTON, self.OnStop, self.btn2)
        
        hbox1.Add(self.gauge, 1, wx.ALIGN_CENTER)
        hbox2.Add(self.btn1, 1, wx.RIGHT, 10)
        hbox2.Add(self.btn2, 1)
        hbox3.Add(self.text, 1)
        vbox.Add((0, 50), 0)
        vbox.Add(hbox1, 0, wx.ALIGN_CENTER)
        vbox.Add((0, 30), 0)
        vbox.Add(hbox2, 1, wx.ALIGN_CENTER)
        vbox.Add(hbox3, 1, wx.ALIGN_CENTER)
        panel.SetSizer(vbox)
        self.Center()
        
    def OnOk(self, event):
        if self.count >= 50:
            return
        self.timer.Start(100)
        self.text.SetLabel('任务正在进行')
    def OnStop(self, event):
        if self.count == 0 or self.count >= 50 or not 
        self.timer.IsRunning():
            return
        self.timer.Stop()
        self.text.SetLabel('任务被中断')
        wx.Bell()
        
    def OnTimer(self, event):
        self.count = self.count+1
        self.gauge.SetValue(self.count)
        if self.count == 50:
            self.timer.Stop()
            self.text.SetLabel('任务已完成')
            
class MyApp(wx.App):
    def OnInit(self):
        frame=MyFrame(None, -1, 'gauge.py')
        frame.Show(True)
        return True
app=MyApp(0)
app.MainLoop()