wxPython styledtextctrl:如何在启用自动换行的情况下获取可见行数?

Posted

技术标签:

【中文标题】wxPython styledtextctrl:如何在启用自动换行的情况下获取可见行数?【英文标题】:wxPython styledtextctrl: How to get number of visible lines with word wrapping enabled? 【发布时间】:2016-07-13 17:49:48 【问题描述】:

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

我在这里看到了几个可见行的答案:

wxPython - StyledTextCtrl get currently visible lines

Get visible lines in Scintilla.NET component

第二个如果用于 C#,但由于基础仍然是闪烁的,我认为它是相关的。

这些解决方案的问题在于,当他们给出行时,他们假设没有启用自动换行。如果已启用,并且某些行被换行,则以下 scintilla 函数在未启用换行时返回该值:

LinesOnScreen()

所以我的问题是,在启用自动换行的情况下,有什么方法可以获取屏幕上的行数?

【问题讨论】:

【参考方案1】:

我假设您想要的是 document 行数,而不是 display 行数。所以如果启用了换行,如果有任何行被换行,前者将小于后者。

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

一个完整的解决方案可能非常复杂,尤其是当您需要考虑行折叠和注释等问题时。但是一个非常基本的解决方案是这样的:

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

但请注意,这不会尝试处理屏幕顶部和底部的部分行(留作读者练习)。

【讨论】:

你说得对,虽然我不知道有一个专门的术语。我确定它在闪烁文件中的某个地方,我可能只是没有注意到它。至于我的需求,我不需要高度准确的解决方案,因此您在此处发布的内容将为我提供足够的信息来完成我需要做的事情。谢谢你的回答。

以上是关于wxPython styledtextctrl:如何在启用自动换行的情况下获取可见行数?的主要内容,如果未能解决你的问题,请参考以下文章

wxPython StyledTextCtrl,奇怪的 'LF'

wxPython styledtextctrl:如何在启用自动换行的情况下获取可见行数?

wxPython中的Pygments?

如何为python 3.6安装wxPython phoenix

在我的 stc.StyledTextCtrl 中插入一个空格,这样代码就不会那么接近行号

如何用python调用wxpython写的下拉框中的选项