Я использую wx.TextCtrl для вывода текста из сетевого демона.
Поскольку вывод довольно подробный, размер текста в TextCtrl может стать огромным (кстати, есть ли какие-либо ограничения на размер содержимого TextCtrl?)
Я хотел бы удалить верхние N строк из TextCtrl, когда TextCtrl.GetNumberOfLines() превышает предопределенный порог. Каков наилучший способ добиться этого?
Удаление строк из wx.TextCtrl
Ответы (4)
В справке по SetMaxLength говорится, что ограничение зависит от базового встроенного текстового элемента управления, но должен быть не менее 32 КБ.
Что касается удаления первых N строк, вы можете попробовать вызвать GetLineLength для 0. .N-1, вычислите сумму S и затем вызовите Remove(0, С)
Как насчет метода Remove из wx.TextCtrl?
Всякий раз, когда вы собираетесь добавить новый текст, вы можете проверить, не кажется ли текущий текст слишком длинным, и удалить его с самого начала.
Remove() должен помочь.
TextCtrl без флага wx.TE_RICH не может иметь более 64 КБ в Windows.
Вы должны иметь возможность использовать 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)
, чтобы удалить первый < em>n строк.