В чем разница между root.destroy () и root.quit ()? - PullRequest
31 голосов
/ 22 февраля 2010

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

Один предпочтительнее другого? Выпускает ли один ресурсы, которых нет у другого?

Ответы [ 2 ]

23 голосов
/ 22 февраля 2010

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

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

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

15 голосов
/ 21 марта 2017

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

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

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