Python using tkinter
、rootウィンドウを閉じるときのroot.destroy()
とroot.quit()
の違いは何ですか?
一方が他方よりも好まれますか?一方が他方が解放しないリソースを解放しますか?
quit()
はTCLインタープリターを停止します。 Tkinterアプリも停止するため、これはほとんどの場合、必要なものです。たとえば、次のような場合は問題になる可能性があります。アイドル状態からアプリを呼び出します。アイドルはそれ自体がTkinkerアプリであるため、アプリでquit()
を呼び出して、TCLインタープリターが終了すると、アイドルも終了します(または混乱します)。
destroy()
はメインループを終了し、すべてのウィジェットを削除します。したがって、別のTkinterアプリからアプリを呼び出す場合、または複数のメインループがある場合は、より安全なようです。」
root.quit()
により、メインループが終了します。すべてのウィジェットと同様に、インタプリタはそのままです。この関数を呼び出すと、root.mainloop()
の呼び出し後に実行されるコードを作成でき、そのコードはウィジェットと対話できます(たとえば、エントリウィジェットから値を取得します)。
Root.destroy()を呼び出すと、すべてのウィジェットが破棄され、mainloopが終了します。 root.mainloop()
の呼び出し後のコードはすべて実行されますが、ウィジェットにアクセスしようとすると(たとえば、エントリウィジェットから値を取得する)、ウィジェットが存在しなくなるため失敗します。