В Python с использованием tkinter в чем разница между root.destroy() и root.quit() при закрытии корневого окна?
Можно ли выбрать другого? Разделяет ли ресурсы другие, не другие?
Ответ 1
"quit() останавливает интерпретатор TCL. Это в большинстве случаев то, что вы хотите, потому что ваше Tkinter-приложение также остановится. Это может быть проблемой, если вы, например, вызываете свое приложение из режима ожидания, idle сам является Tkinker -app, поэтому, если вы вызываете quit() в своем приложении, и интерпретатор TCL заканчивается, простаивание также прекращается (или путается).
destroy() просто завершает mainloop и удаляет все виджеты. Таким образом, кажется, что безопаснее, если вы вызываете свое приложение из другого приложения Tkinter, или если у вас есть несколько mainloops. "
root.quit() вызывает выход mainloop. Интерпретатор по-прежнему неповрежден, как и все виджеты. Если вы вызываете эту функцию, вы можете иметь код, который выполняется после вызова root.mainloop(), и этот код может взаимодействовать с виджетами (например, получить значение из виджета записи).
Вызов root.destroy() уничтожит все виджеты и выйдет из mainloop. Любой код после вызова root.mainloop() будет запущен, но любая попытка доступа к любым виджетам (например, получить значение из виджета записи) завершится неудачно, потому что виджет больше не существует.