Удаление строк из 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 строк.

Другие вопросы по тегам