Вопрос

Я использую wx.TextCtrl для вывода текста из сетевого демона.
Поскольку выходные данные довольно многословны, размер текста в TextCtrl может стать огромным (кстати, есть ли какие-либо ограничения на размер содержимого TextCtrl?)
Я хотел бы удалить верхние N строк из TextCtrl, когда TextCtrl.GetNumberOfLines () превышает предопределенный порог. Каков наилучший способ сделать это?

Это было полезно?

Решение

ссылка SetMaxLength говорит, что ограничение зависит от исходного текста контроль, но должен быть не менее 32 КБ.

Об удалении верхних N строк вы можете попытаться позвонить в GetLineLength . для 0..N-1 вычислите сумму S и затем вызовите Удалить (0, S)

Другие советы

Как насчет метода 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) удалить первые n строки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top