牛骨文教育服务平台(让学习变的简单)

wxPython:状态栏介绍

本节看一下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。