Подтвердить что ты не робот

В чем разница между root.destroy() и root.quit()?

В Python с использованием tkinter в чем разница между root.destroy() и root.quit() при закрытии корневого окна?

Можно ли выбрать другого? Разделяет ли ресурсы другие, не другие?

4b9b3361

Ответ 1

"quit() останавливает интерпретатор TCL. Это в большинстве случаев то, что вы хотите, потому что ваше Tkinter-приложение также остановится. Это может быть проблемой, если вы, например, вызываете свое приложение из режима ожидания, idle сам является Tkinker -app, поэтому, если вы вызываете quit() в своем приложении, и интерпретатор TCL заканчивается, простаивание также прекращается (или путается).

destroy() просто завершает mainloop и удаляет все виджеты. Таким образом, кажется, что безопаснее, если вы вызываете свое приложение из другого приложения Tkinter, или если у вас есть несколько mainloops. "

взято из http://www.daniweb.com/forums/thread66698.html

Ответ 2

root.quit() вызывает выход mainloop. Интерпретатор по-прежнему неповрежден, как и все виджеты. Если вы вызываете эту функцию, вы можете иметь код, который выполняется после вызова root.mainloop(), и этот код может взаимодействовать с виджетами (например, получить значение из виджета записи).

Вызов root.destroy() уничтожит все виджеты и выйдет из mainloop. Любой код после вызова root.mainloop() будет запущен, но любая попытка доступа к любым виджетам (например, получить значение из виджета записи) завершится неудачно, потому что виджет больше не существует.