找出可以显示的行数wx.richtext.RichTextCtrl无需滚动

2024-09-28 22:27:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python+wxPython编写一个电子书阅读器,我想知道在给定的RichTextCtrl中有多少行文本可以用当前格式显示而不需要滚动。在

我曾考虑过使用并将控件的高度除以RichTextCtrl.GetFont().GetPixelSize(),但似乎只有在Windows和GTK上指定了wx.Font的像素大小参数。此外,这不包括行/段之间的任何额外垂直间距。在

当然,我可以用点来表示字体大小,尝试用ppi来获得显示器的分辨率,然后这样做,但是1)行距问题仍然存在,2)对于这样的事情来说,抽象程度太低了。在

有没有一种明智的方法?在

编辑:目的是把电子书分成几页,这样滚动单元就是一整页,而不是一行。在


Tags: 文本gtk高度windows格式wxpython像素电子书
2条回答

PageDown方法的源代码表明,没有一种合理的方法可以做到这一点。。。在

这是我的疯狂主张(打破了小部件的内容,插入符号,显示位置…)滚动一页,衡量这个滚动有多长。。。在

def GetLineHeight(rtc):
    tallString = "\n".join([str(i) for i in xrange(200)])
    rtc.SetValue(tallString)
    rtc.SetInsertionPoint(0)
    rtc.PageDown()
    pos = rtc.GetInsertionPoint()
    end = tallString.find("\n",pos)
    lineHeight=int(tallString[pos:end])
    return lineHeight

是否尝试调用GetNumberOfLines()方法?根据罗宾·邓恩的说法,这应该是可行的,尽管它没有考虑包装线。在

相关问题 更多 >