# -*- 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) #给状态栏设文字