如何删除Tkinter中的所有控件?
我正在用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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。