Есть ли способ очистить стек отмены / повтора для текстового виджета в Tkinter? - PullRequest
1 голос
/ 01 мая 2020

Я создаю специализированный текстовый редактор с использованием виджетов Tkinter Text. Некоторые из файлов, которые будут редактироваться, довольно большие (300–500 тыс. Строк). Некоторые функции в редакторе влияют на весь файл (например, пометка определенных строк на основе содержимого и т. Д. c.). Я использую автосепараторы для обработки таких ситуаций, когда отмена по существу сбрасывает все содержимое текстового виджета в предыдущее состояние. Другими словами, я получаю все содержимое текстового виджета, обрабатываю его, а затем удаляю существующее содержимое текстового виджета и затем вставляю отредактированное содержимое. Проблема в том, что использование памяти потенциально может быть проблемой. Например, файл строки размером 295 КБ (около 6,8 МБ) может вызвать увеличение памяти примерно на 25 МБ при выполнении функции для всего документа (не уверен, откуда берется 3-4X). Во время сеанса пользователь может выполнять многочисленные функции для всего документа.

Я бы по крайней мере хотел бы "очистить" стек отмены / восстановления, когда пользователь открывает новый файл или просто создает новый пустой файл. Я знаю, что есть много аргументов о сохранении отмены / повтора файлов, но для моего сообщества пользователей это не проблема. Очистка стека не повлияет на их рабочий процесс.

Я попытался отключить текстовый виджет отмены (через конфигурацию), а затем снова включить его, но, похоже, это не оказало никакого влияния.

Буду признателен за любые мысли по этому вопросу или руководство по лучшему подходу к решению подобных ситуаций. Спасибо.

1 Ответ

1 голос
/ 01 мая 2020

Метод edit_reset очищает стек отмены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...