wxPython:状态栏介绍

最后更新于:2022-04-01 19:41:30

本节看一下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() ~~~ 测试: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-08_575793605443b.png) 其中: CreateStatusBar()用来增加一个状态栏。 SetFieldsCount()方法设置将状态分为几个区。 SetStatusText()用于设置状态栏内容。 SetStatusWidth()用于设置各栏宽度,该方法要求一个整数的Python列表作为参数,列表的长度必须和状态栏中哉的数量一致。按列表中整数的顺序来计算对应域的宽度。如果整数是正值,那么宽度是固定的。如果你想域的宽度随框架的变化而变化,那么应该使用负值。负值的绝对值代表域的相对宽度;可以把它认为是所占总宽度的比例。例如调用statusbar.SetStatusWidth([-1, -2,-3])方法所导致的各域从左到右的宽度比例是1:2:3。
';