質問

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 行を削除します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top