如何延长身份?

时间:2018-11-04 15:31:21

标签: wxpython

我有一个带有文本编辑器的框架和一个状态栏,该状态栏显示了光标所在的行和列。如何使之在状态栏扩展时,状态栏的显示宽度栏也是如此? / p>

代码:

import wx
import wx.stc as stc
import os

class Window(wx.Frame):
    def __init__(self, parent, title):

        wx.Frame.__init__(self, parent, title=title, size=(500, 500))
        self.control = stc.StyledTextCtrl(self, style=wx.TE_MULTILINE | wx.TE_WORDWRAP)

        self.control.Bind(wx.EVT_KEY_UP, self.LineColumn)

        self.Status_Bar()

    def Status_Bar(self):
        #Status Bar
        self.statusbar = self.CreateStatusBar(3)
        self.SetStatusWidths([-140, 60, 140])
        self.LineColumn(self)

    def LineColumn(self, e):
        line = self.control.GetCurrentLine() + 1
        col = self.control.GetColumn(self.control.GetCurrentPos())
        stat = "Ln: %s, Col: %s" % (line, col)
        self.StatusBar.SetStatusText(stat, 1)

    def RandomText(self, e):
        self.StatusBar.SetStatusText("Random Text", 3)

def main():
    app = wx.App()
    frame = Window(None, "Text Editor")
    frame.Show()
    app.MainLoop()

if __name__ == '__main__':
    main()

谢谢。

1 个答案:

答案 0 :(得分:3)

最简单的方法是对显示行号和列号的中间项使用可变宽度字段。根据{{​​3}},

  

字段有两种类型:固定宽度和可变宽度字段。   对于固定宽度的字段,您应指定其(恒定)宽度   以像素为单位。对于可变宽度字段,请指定一个负数   指示字段应如何扩展:所有剩余空间   可变宽度字段根据   此数字的绝对值。宽度为-2的可变宽度字段   它的宽度是宽度为-1的字段的两倍,依此类推。

     

例如,在右侧创建一个宽度为100的固定宽度字段   状态栏的一部分和另外两个字段,分别占状态栏的66%和33%   剩余的空间相应地,您应该使用一个数组   包含-2,-1和100。

因此,如果将行self.SetStatusWidths([-140, 60, 140])更改为self.SetStatusWidths([-2, -1, 100]),则显示数字的状态栏的中间部分将如上面引文所述扩展。

您可以将SetStatusWidths中使用的数字更改为所需的任何数字。 self.SetStatusWidths([-1, -1, -1])应该使所有列均等扩展。 self.SetStatusWidths([-1, -2, -1])应该使中间列的宽度是其他列的两倍。等等。

我主要使用c ++,而且我不是wxPython的专家,所以我的语法可能有些错误,但这是基本思想。希望对您有所帮助。