В чем разница между root.destroy() и root.quit()?
В Python с использованием tkinter
в чем разница между root.destroy()
и root.quit()
при закрытии корневого окна?
Можно ли выбрать другого? Разделяет ли ресурсы другие, не другие?
Ответы
Ответ 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()
будет запущен, но любая попытка доступа к любым виджетам (например, получить значение из виджета записи) завершится неудачно, потому что виджет больше не существует.