如何删除Tkinter中的所有控件?

编程语言 2026-07-09

我正在用Python与 Tkinter制作一个应用程序,需要清空GUI界面(销毁所有对象/部件)。

我已经尝试过在其他帖子中看到的方法:

    def clear(self):
        for child in root.winfo_children():
            child.destroy()

但是在运行并尝试像下面这样创建一个新部件时:

                self.clear()
                Label(self, text="test", font=tkFont.Font(family="Arial", size=25)).place(x=0, y=0)

它报错:

_tkinter.TclError: bad window path name ".!application"

是否有更好的方法,还是需要执行另外一个命令才能让它工作?

解决方案

这是因为你在销毁Tkinter仍然引用的帧。
问题在于 self(或根窗口)在被销毁后仍被重复使用。
与其销毁主容器,不如只清空它的子部件:

for widget in self.winfo_children():
widget.destroy()

然后在同一个帧中重新创建部件。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章