所以我是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()
,但这些只适用于该函数中使用的最后一个标签。
我应该对所有标签或其他内容进行分组吗?
答案 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
清除屏幕后,只需输入地图并再次运行...