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