清除整根

Clear whole root

我是 tkinter 的新手,我想知道是否有清除整个根的方法 (window)。我试过 root.destroy() ,但我想有机会撤消(回调一些小部件)。我也试过 .pack_forget().grid_forget() ,但是需要很多时间,以后可能会导致程序出现很多错误。

感谢您的帮助。

如果您打算从字面上销毁根 window 中的所有内容,我的建议是使单个框架成为根 window 的子框架,然后将所有内容放入该框架中。然后,当您需要清除根 window 时,您只需删除这个小部件,它会负责删除所有其他小部件。

如果您只想隐藏小部件而不是销毁它们,最好的解决方案是使用 grid,这样您就可以使用 grid_forget 将它们从视图中删除,并且 grid 使它们再次可见。您可以使用 packpack_forget,但 pack 不记得小部件的位置,这使得在不进行大量工作的情况下恢复它们变得更加困难。

如果您的程序由小部件的逻辑组组成,请使用框架来创建组,然后您可以 destroy 或立即在整个框架上调用 grid_forget,而不必为每个单独的小部件执行此操作。

for ele in root.winfo_children():
  ele.destroy()