Выяснение того, сколько строк можно отобразить в wx.richtext.RichTextCtrl без прокрутки - PullRequest
2 голосов
/ 17 августа 2010

Я пишу программу для чтения электронных книг на Python + wxPython, и я хотел бы узнать, сколько строк текста можно отобразить в данном RichTextCtrl с текущим форматированием без прокрутки.

Я думал об использовании и делении высоты элемента управления на RichTextCtrl.GetFont().GetPixelSize(), но похоже, что параметр размера пикселя wx.Font указан только в Windows и GTK.Кроме того, это не будет охватывать дополнительное вертикальное расстояние между строками / абзацами.

Конечно, я мог бы получить размер шрифта в пунктах, попытаться получить разрешение экрана в ppi и сделать это таким образом, но 1) проблема с межстрочным интервалом все еще остается и 2) это слишком мало aуровень абстракции для чего-то вроде этого.

Есть ли разумный способ сделать это?

РЕДАКТИРОВАТЬ : Цель состоит в том, чтобы разделить книгу на страницы, чтобы блок прокрутки представлял собой целую страницу,в отличие от линии.

Ответы [ 2 ]

2 голосов
/ 26 августа 2010

Исходный код метода 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
0 голосов
/ 20 августа 2010

Вы пытались вызвать метод GetNumberOfLines ()? По словам Робина Данна, это должно сработать, хотя и не учитывает переносимые строки.

...