wx.TextCtrl からの行の削除
-
19-08-2019 - |
質問
wx.TextCtrl を使用してネットワークデーモンからテキストを出力しています。
出力は非常に冗長であるため、TextCtrl 内のテキストのサイズが巨大になる可能性があります (ところで、TextCtrl の内容のサイズに制限はありますか?)
TextCtrl.GetNumberOfLines() が事前定義されたしきい値を超えたときに、TextCtrl から上位 N 行を削除したいと考えています。これを達成するための最良の方法は何でしょうか?
解決
の SetMaxLength リファレンス 制限は基礎となるネイティブ テキスト コントロールによって異なりますが、少なくとも 32KB である必要があると記載されています。
上位 N 行の削除については、電話してみてください。 GetLineLength 0..N-1 の場合、合計 S を計算してから呼び出します。 取り除く(0,S)
他のヒント
wx.TextCtrlのRemoveメソッドはどうですか?
新しいテキストを追加しようとするときはいつでも、現在のテキストが長すぎるかどうかを確認し、一部を最初から削除できます。
Remove()はトリックを行う必要があります。
wx.TE_RICHフラグのないTextCtrlは、Windowsで64 KBを超えることはできません。
wx.TextCtrl.PositionToXY()
を使用できるはずです。 および wx.TextCtrl.XYToPosition()
位置(開始から文字数で測定)を(column, line_num)
ペアとの間で変換します。
したがって、i = wx.TextCtrl.XYToPosition(0, n)
を使用して特定の行の位置i
を取得できます n (または n + 1 、それらのカウント方法によって0 -または1ベース)、次に wx.TextCtrl.Remove(0, i)
を呼び出しますで最初の n 行を削除します。