本節看一下wxPython中狀態欄的編程,先看個例子,此程序中其他部分代碼略,如需要請看上一篇文章。
class PaintFrame(wx.Frame): def __init__(self, parent): wx.Frame.__init__(self, parent, -1, "Panit Frame", size = (800, 600)) self.paint = PaintWindow(self, -1) #狀態欄 self.paint.Bind(wx.EVT_MOTION, self.OnPaintMotion) self.statusbar = self.CreateStatusBar() #將狀態欄分割為3個區域,比例為1:2:3 self.statusbar.SetFieldsCount(3) self.statusbar.SetStatusWidths([-1, -2, -3]) def OnPaintMotion(self, event): #設置狀態欄1內容 self.statusbar.SetStatusText(u"鼠標位置:" + str(event.GetPositionTuple()), 0) #設置狀態欄2內容 self.statusbar.SetStatusText(u"當前線條長度:%s" % len(self.paint.curLine), 1) #設置狀態欄3內容 self.statusbar.SetStatusText(u"線條數目:%s" % len(self.paint.lines), 2) event.Skip() if __name__ == '__main__': app = wx.PySimpleApp() frame = PaintFrame(None) frame.Show(True) app.MainLoop()
測試:
其中:
CreateStatusBar()用來增加一個狀態欄。
SetFieldsCount()方法設置將狀態分為幾個區。
SetStatusText()用於設置狀態欄內容。
SetStatusWidth()用於設置各欄寬度,該方法要求一個整數的Python列表作為參數,列表的長度必須和狀態欄中哉的數量一致。按列表中整數的順序來計算對應域的寬度。如果整數是正值,那么寬度是固定的。如果你想域的寬度隨框架的變化而變化,那么應該使用負值。負值的絕對值代表域的相對寬度;可以把它認為是所占總寬度的比例。例如調用statusbar.SetStatusWidth([-1, -2,-3])方法所導致的各域從左到右的寬度比例是1:2:3。