wxpython - 如何在我的编辑器中扩展边距?
问题描述
我制作了一个带有行号的文本编辑器,它工作正常,但是每当我的行数达到数千行时,它就不适合页边距。如何使边距以与数字相同的长度开始并在需要时增加?
编辑:
import wx
import wx.stc as stc
class Window(wx.Frame):
def __init__(self, parent, title):
self.leftMarginWidth = 35
wx.Frame.__init__(self, parent, title=title, size=(500, 500))
self.control = stc.StyledTextCtrl(self, style=wx.TE_MULTILINE | wx.TE_WORDWRAP)
self.clipboard = wx.Clipboard()
self.Margins()
def Margins(self):
self.control.SetViewWhiteSpace(False)
self.control.SetMargins(5, 0)
self.control.SetMarginType(1, stc.STC_MARGIN_NUMBER)
self.control.SetMarginWidth(1, self.leftMarginWidth)
def main():
app = wx.App()
frame = Window(None, "Text Editor")
frame.Show()
app.MainLoop()
if __name__ == '__main__':
main()
谢谢!
解决方案
尝试在控件发生更改时设置边距宽度,绑定到EVT_STC_UPDATEUI
.
import wx
import wx.stc as stc
class Window(wx.Frame):
def __init__(self, parent, title):
self.leftMarginWidth = 16
wx.Frame.__init__(self, parent, title=title, size=(500, 500))
self.control = stc.StyledTextCtrl(self, style=wx.TE_MULTILINE | wx.TE_WORDWRAP)
self.clipboard = wx.Clipboard()
self.Margins()
self.control.Bind(stc.EVT_STC_UPDATEUI, self.Scroll)
def Margins(self):
self.control.SetViewWhiteSpace(False)
self.control.SetMargins(5, 0)
self.control.SetMarginType(1, stc.STC_MARGIN_NUMBER)
def Scroll(self,event):
x = self.control.GetFirstVisibleLine()
y = self.control.LinesOnScreen()
x = x+y
x = len(str(x)) #calculate the number of digits in the highest visible line number
self.control.SetMarginWidth(1, x*16) #Reset the margin width
def main():
app = wx.App()
frame = Window(None, "Text Editor")
frame.Show()
app.MainLoop()
if __name__ == '__main__':
main()
推荐阅读
- python - 如果 dtype 在 pandas 中是 int,如何删除行?
- c# - 泛型类没有将所有属性的值返回给调用方法
- angular - 如何从发布请求中获得响应
- javascript - 如何将值从 Vue 提示符传递给 JS 变量
- azure - Azure powershell 函数 - 无法从程序集“mscorlib,版本=4.0.0.0”加载类型“System.Runtime.InteropServices.OSPlatform”
- angular - NGX-Mask 在单个输入上进行多重屏蔽
- kotlin - 即使它不起作用/充满错误,是否可以从示例代码创建绑定库?
- oracle11g - 从 SQL Server 2012 查询 11g Oracle 数据库
- swiftui - HStack 中的 SwiftUI EditButton 未激活编辑模式
- contentful - 创建虚拟内容