# -*- coding: utf-8 -*- import wx class customStatusBar(wx.StatusBar): def __init__(self, parent): wx.StatusBar.__init__(self,parent,-1) self.SetFieldsCount(2) self.SetStatusWidths([-2,-1]) self.count=0 print parent.GetSize() self.gauge=wx.Gauge(self,1001,100,pos=(2,2),size=(parent.GetSize()[0],20),style = wx.GA_HORIZONTAL) self.gauge.SetBezelFace(3) self.gauge.SetShadowWidth(3) self.gauge.SetValue(50) class priceFrame(wx.Frame): def __init__(self, parent, id): wx.Frame.__init__(self, parent, id, U'帶進度條的狀態欄', size=(410, 385), style=wx.MINIMIZE_BOX | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX) self.openfilename='' self.status = customStatusBar(self) self.SetStatusBar(self.status) if __name__ == '__main__': app = wx.PySimpleApp() frame = priceFrame(parent=None, id=-1) frame.Show() app.MainLoop()

CreateStatusBar()用來增加一個狀態欄。
SetFieldsCount()方法設置將狀態分為幾個區。
SetStatusText()用於設置狀態欄內容。
SetStatusWidth()用於設置各欄寬度,該方法要求一個整數的Python列表作為參數,列表的長度必須和狀態欄中哉的數量一致。按列表中整數的順序來計算對應域的寬度。如果整數是正值,那么寬度是固定的。如果你想域的寬度隨框架的變化而變化,那么應該使用負值。負值的絕對值代表域的相對寬度;可以把它認為是所占總寬度的比例。例如調用statusbar.SetStatusWidth([-1, -2,-3])方法所導致的各域從左到右的寬度比例是1:2:3。
statusBar = wx.StatusBar(self, -1)# 實例化 wx.StatusBar
statusBar.SetFieldsCount(3) # 狀態欄分成3個區域
statusBar.SetStatusWidths([-1,-1,-1]) #區域寬度比列,用負數
statusBar.SetStatusText("A Custom StatusBar...", 0) #給狀態欄設文字
self.SetStatusBar(statusBar) #將狀態欄附加到框架上
statusBar = self.CreateStatusBar() #調用框架wx.frame的CreateStatusBar方法
statusBar.statusBar.SetFieldsCount(3) # 狀態欄分成3個區域
statusBar.SetStatusWidths([-1,-1,-1]) #區域寬度比列,用負數
statusBar.SetStatusText("A Custom StatusBar...", 0) #給狀態欄設文字
