Quelle est la différence entre la racine.destroy() et de la racine.quitter()?

en Python en utilisant tkinter, quelle est la différence entre root.destroy() et root.quit() lors de la fermeture de la fenêtre racine?

Est un préféré sur l'autre? Est-ce que l'un libère des ressources que l'autre ne libère pas?

28
demandé sur nbro 2010-02-22 00:09:21

2 réponses

" quit() arrête L'interprète TCL. C'est dans la plupart des cas ce que vous voulez, parce que votre Tkinter-app va également s'arrêter. Cela peut être un problème, si vous appelez par exemple votre application à partir de idle. idle est lui-même une application Tkinker, donc si vous appelez quit() dans votre application et que L'interpréteur TCL est terminé, idle se terminera aussi (ou deviendra confus ).

destroy () termine juste le bloc principal et supprime tous les widgets. Il semble donc être plus sûr si vous appelez votre application à partir d'une autre application Tkinter, ou si vous avez mainloops multiples."

extrait de http://www.daniweb.com/forums/thread66698.html

23
répondu ErikT 2010-02-22 03:50:24

root.quit() fait sortir mainloop. L'interpréteur est toujours intact, comme tous les widgets. Si vous appelez cette fonction, vous pouvez avoir le code qui s'exécute après l'appel à root.mainloop(), et ce code peut interagir avec les widgets (par exemple, obtenir une valeur à partir d'un widget d'entrée).

appel à root.destroy () détruira tous les widgets et mainloop de exit. Le code après l'appel à root.mainloop() exécuter, mais toute tentative d'accès à tous les widgets (par exemple, obtenir une valeur à partir d'une entrée widget) va échouer parce que le widget n'existe plus.

12
répondu Bryan Oakley 2017-03-21 13:09:10