从wx.TextCtrl中删除行

时间:2009-01-16 12:38:19

标签: python wxpython wx.textctrl

我正在使用wx.TextCtrl从网络守护程序输出文本 由于输出非常冗长,TextCtrl中文本的大小可能变得很大(顺便说一下,TextCtrl内容的大小是否有限制?)
当TextCtrl.GetNumberOfLines()超过预定义的阈值时,我想从TextCtrl中删除前N行。 实现这一目标的最佳方法是什么?

4 个答案:

答案 0 :(得分:1)

SetMaxLength reference表示限制取决于底层的本机文本控件,但至少应为32KB。

关于删除前N行,您可以尝试将GetLineLength调用为0..N-1,计算总和S然后调用Remove(0,S)

答案 1 :(得分:0)

wx.TextCtrl的Remove方法怎么样?

每当您要添加新文本时,您可以检查当前文本是否显示得太长,并从一开始就删除一些。

答案 2 :(得分:0)

Remove()应该可以解决问题。

没有wx.TE_RICH标志的TextCtrl在Windows上不能超过64 KB。

答案 3 :(得分:0)

您应该可以使用wx.TextCtrl.PositionToXY()wx.TextCtrl.XYToPosition()将位置(从开头测量的字符数)转换为(column, line_num)对。

因此,您可以使用i = wx.TextCtrl.XYToPosition(0, n)获取特定行 n (或 n + 1 )的位置i,具体取决于方式你把它们算作0或1),然后调用wx.TextCtrl.Remove(0, i)删除第一个 n 行。