我正在尝试确定wxPython styledtextctrl中屏幕上显示的行数,并启用自动换行。
我在这里看到了几条可见线的答案:
wxPython - StyledTextCtrl get currently visible lines
Get visible lines in Scintilla.NET component
第二个是C#,但由于基地仍然是scintilla,我认为它是相关的。
这些解决方案的问题在于它们提供了行,但是假设未启用自动换行,它们会这样做。如果它已启用,并且某些行被包装,则如果未启用包装,则以下scintilla函数将返回该值:
LinesOnScreen()
所以我的问题是,如果启用自动换行,是否有任何方法可以获得屏幕上的行数?
答案 0 :(得分:1)
我假设您想要的是文档行的数量,而不是 display 行的数量。因此,如果启用了包装,如果包装了任何行,前者将小于后者。
正如您已经发现的那样,LinesOnScreen()
将提供可见显示行的数量。但目前没有内置工具来获取可见文档行的数量,因此需要进行计算。
完整的解决方案可能非常复杂,特别是如果您需要考虑线折叠和注释等内容。但是一个非常基本的解决方案会是这样的:
index = editor.GetFirstVisibleLine()
lines = editor.LinesOnScreen() + index
count = 0
while index < lines:
index += editor.WrapCount(index)
count += 1
但请注意,这并不是为了处理屏幕顶部和底部的部分线条(这是留给读者的练习)。