从 tkinter 中清除所有标签 window

Clearing all Labels from a tkinter window

所以我是 tkinter 的新手,但我已经得到了我想要工作的东西,直到某个点。 我不确定我是否正确设置了它,但我有一张世界地图,右边有按钮,左边有事件日志,当事情发生时,它会填满标签。 问题是过了一会儿,整个日志都填满了。 删除所有标签或每次删除最旧(顶部)标签的最佳方法是什么? 这就是我的意思:

定义在这里:

root=Tk()
Map=PhotoImage(file="C:/Users/Willam/Desktop/CWProgram/map2.gif")
background=Label(root,image=Map).place(x=100,y=0,relwidth=1,relheight=1)
Title=Label(root,text='                     LOG').pack(anchor=NW)

我这样创建标签:

info=Label(root,text='Select a sector to move units from',wraplength=170)
info.pack(anchor=NW)

我尝试了通常的 info.destoy()info.forget(),但这些仅适用于该函数中使用的最后一个标签。 我应该将所有标签分组还是什么?

正如 PM 2Ring 所建议的那样,将标签附加到列表中以供将来参考通常很有用:

tmp = Label(...)
labels.append(tmp)

然后只是:

foreach label in labels: label.destroy()

如果您不想要列表,并且确定要清除根目录中的所有内容

foreach label in root.children.values(): label.destroy()

children dict 始终包含其中包含的对象。如果你想保留地图标签,你必须像我展示的那样制作你自己的列表,而不是在其中附加 info

我建议使用:

info.pack_forget()

对于您创建的每个包,您必须按照以下格式进行操作:

packname.pack_forget()

如果你有很多包,这是不切实际的,但否则效果很好。

这也使得有选择地移除一些标签并保留其他标签变得非常容易,因为它不会清除您放置的所有包装。

只需使用:

root.children.clear

清屏后再次输入地图和函数...