Проверка наличия изменений в других окнах того же процесса при завершении

proverka nalichiya izmenenij v drugih oknah togo zhe processa pri zavershenii Примеры законченных программ с графическим интерфейсом

Кроме того, редактор PyEdit имел обыкновение игнорировать наличие изменений в других окнах редактирования при закрытии главного окна. В соответствии с реализацией, щелчок на кнопке Quit во всплывающем окне приводит к закрытию только этого окна, но операция закрытия главного окна вызывает метод quit из библиотеки tkinter, который завершает всю программу. В предыдущей версии при закрытии любого окна выполнялась проверка наличия изменений только в этом окне, а остальные окна игнорировались — закрытие главного окна могло привести к потере изменений в других окнах, закрываемых автоматически при завершении программы.

Чтобы исправить этот недостаток, текущая версия сохраняет список всех открытых в процессе окон редактирования — при закрытии главного окна теперь выполняется проверка наличия изменений во всех окнах и при необходимости предлагается подтвердить завершение программы. Это решение не устраняет все возможные проблемы (оно не устраняет проблему потери изменений, когда завершение приложения производится с помощью виджетов, находящихся за пределами PyEdit), но это существенное улучшение. Более полное решение может заключаться в переопределении или перехвате вызова метода quit библиотеки tkinter. Однако, чтобы не углубляться в детали, я отложу эту тему до более позднего обсуждения в этом же разделе (смотрите обсуждение реализации обработки события <Destroy> ниже); кроме того, смотрите соответствующие комментарии в конце файла с исходным программным кодом PyEdit, где даются примечания к реализации.

Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий