我有一个带有文本编辑器的框架和一个状态栏,该状态栏显示了光标所在的行和列。如何使之在状态栏扩展时,状态栏的显示宽度栏也是如此? / 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()
谢谢。
答案 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的专家,所以我的语法可能有些错误,但这是基本思想。希望对您有所帮助。