wxPython styledtextctrl:如何获取启用换行的可见行数?

时间:2016-07-13 17:49:48

标签: python wxpython scintilla

我正在尝试确定wxPython styledtextctrl中屏幕上显示的行数,并启用自动换行。

我在这里看到了几条可见线的答案:

wxPython - StyledTextCtrl get currently visible lines

Get visible lines in Scintilla.NET component

第二个是C#,但由于基地仍然是scintilla,我认为它是相关的。

这些解决方案的问题在于它们提供了行,但是假设未启用自动换行,它们会这样做。如果它已启用,并且某些行被包装,则如果未启用包装,则以下scintilla函数将返回该值:

LinesOnScreen()

所以我的问题是,如果启用自动换行,是否有任何方法可以获得屏幕上的行数?

1 个答案:

答案 0 :(得分:1)

我假设您想要的是文档行的数量,而不是 display 行的数量。因此,如果启用了包装,如果包装了任何行,前者将小于后者。

正如您已经发现的那样,LinesOnScreen()将提供可见显示行的数量。但目前没有内置工具来获取可见文档行的数量,因此需要进行计算。

完整的解决方案可能非常复杂,特别是如果您需要考虑线折叠和注释等内容。但是一个非常基本的解决方案会是这样的:

    index = editor.GetFirstVisibleLine()
    lines = editor.LinesOnScreen() + index
    count = 0
    while index < lines:
        index += editor.WrapCount(index)
        count += 1

但请注意,这并不是为了处理屏幕顶部和底部的部分线条(这是留给读者的练习)。