清除tkinter窗口中的所有标签

时间:2016-10-25 12:16:23

标签: python user-interface tkinter labels

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

enter image description here

在此定义:

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(),但这些只适用于该函数中使用的最后一个标签。 我应该对所有标签或其他内容进行分组吗?

3 个答案:

答案 0 :(得分:2)

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

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

然后只是:

foreach label in labels: label.destroy()

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

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

子dict总是保存其中包含的对象。如果您想保留地图标签,则必须按照我的展示制作自己的列表,而不必将info添加到其中。

答案 1 :(得分:0)

我建议使用:

info.pack_forget()

对于您创建的每个包,您必须采用以下格式:

packname.pack_forget()

如果你有很多包装是不切实际的,但其他方面效果很好。

这也可以很容易地选择性地删除一些标签并留下其他标签,因为它不会清除您放置的所有包装。

答案 2 :(得分:0)

只需使用:

root.children.clear

清除屏幕后,只需输入地图并再次运行...