代码之家  ›  专栏  ›  技术社区  ›  Gary Willoughby

root.destroy()和root.quit()有什么区别?

  •  31
  • Gary Willoughby  · 技术社区  · 15 年前

    在Python中使用 tkinter ,两者有什么区别 root.destroy() root.quit() 关闭根窗口时?

    一个比另一个好吗?一方是否释放另一方不释放的资源?

    2 回复  |  直到 6 年前
        1
  •  24
  •   ErikT    15 年前

    “quit()停止tcl解释器。在大多数情况下,这是你想要的,因为你的tkinter应用程序也会停止。这可能是个问题,例如,如果你从空闲状态调用你的应用程序。idle本身就是一个tkinker应用程序,因此,如果在应用程序中调用quit()并终止tcl解释器,idle也会终止(或混淆)。

    destroy()只终止主循环并删除所有小部件。因此,如果您从另一个tkinter应用程序调用您的应用程序,或者如果您有多个主循环,则似乎更安全。”

    取自 http://www.daniweb.com/forums/thread66698.html

        2
  •  15
  •   Bryan Oakley    8 年前

    root.quit() 使主循环退出。解释器仍然是完整的,所有的小部件也是完整的。如果调用此函数,则可以在调用 root.mainloop() 并且该代码可以与小部件交互(例如,从入口小部件获取值)。

    调用root.destroy()将销毁所有小部件并退出主循环。呼叫后的任何代码 根·主环() 将运行,但访问任何小部件(例如,从入口小部件获取值)的任何尝试都将失败,因为该小部件已不存在。