Удаление строк из wx.TextCtrl - PullRequest
2 голосов
/ 16 января 2009

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

Ответы [ 4 ]

1 голос
/ 16 января 2009

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

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

0 голосов
/ 08 августа 2016

Вы должны иметь возможность использовать 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 строк.

0 голосов
/ 16 января 2009

Remove () должен помочь.

TextCtrl без флага wx.TE_RICH не может иметь более 64 КБ в Windows.

0 голосов
/ 16 января 2009

Как насчет метода Remove wx.TextCtrl?

Всякий раз, когда вы собираетесь добавить новый текст, вы можете проверить, является ли текущий текст слишком длинным, и удалить его с самого начала.

...