2

Python + wxPythonで電子書籍リーダーを書いていますが、スクロールせずに現在のフォーマットで特定のRichTextCtrlに表示できるテキストの行数を調べたいと思います。

コントロールの高さを使用して除算することを考えましRichTextCtrl.GetFont().GetPixelSize()たが、のピクセルサイズパラメータはwx.FontWindowsとGTKでのみ指定されているようです。さらに、これは行/段落間の追加の垂直方向の間隔をカバーしません。

もちろん、フォントサイズをポイントで取得し、ディスプレイの解像度をppiで取得して、そのようにすることもできますが、1)行間隔の問題は依然として残っており、2)これは次のような抽象化のレベルでは低すぎます。これ。

これを行うための正しい方法はありますか?

編集:目的は、電子書籍をページに分割することです。したがって、スクロール単位は行ではなくページ全体になります。

4

2 に答える 2

2

PageDownメソッドのソースコードは、これを行うための正しい方法がないことを示唆しています...

これが私の非常識な提案(ウィジェットのコンテンツ、カレット、表示位置を壊す...)で、1ページをスクロールし、このスクロールの長さを測定します...

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
于 2010-08-26T11:03:53.540 に答える
0

GetNumberOfLines() メソッドを呼び出してみましたか? Robin Dunn によると、それは動作するはずですが、折り返された行は考慮されていません。

于 2010-08-19T21:22:05.477 に答える