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