如何在python Tk GUI中删除屏幕上的标签

时间:2014-09-30 23:59:44

标签: python user-interface tkinter widget

#here is the example code:
label1 = Label(app, text="This is a Label!")
label1.pack()
#But when i do:
label1.pack_forget()
#I get this error:
#AttributeError: 'NoneType' object has no attribute 'pack_forget'
#I also try:
label1.destroy()

我得到了同样的错误。 我希望能够从屏幕上取下标签,这样我就可以 在屏幕上放置一个更新的标签。

2 个答案:

答案 0 :(得分:1)

正如问题的评论部分所解释的那样,问题在于你是这样做的:

label1=Label(...).pack(...)

这会导致label1成为None。只要您执行x=foo().bar()x将始终设置为bar()的结果。在这种情况下,pack(...)的结果始终为None,因此label1始终为None。显然,None没有名为pack_forget的方法。

解决方案是将小部件创建与小部件布局分开:

label1 = Label(...)
label1.pack(...)

要解决标题中的问题:要从屏幕中删除小部件,您可以使用pack_forget()grid_forget(),具体取决于您使用的是pack还是grid在那个小部件上。请记住,会破坏小部件,它只会将其从视图中删除。

要完全删除小部件,请调用destroy()方法,该方法将删除小部件将其从视图中删除。

答案 1 :(得分:0)

首先,您已将您的标签label1命名为,但随后您label.pack_forget()。它应该是label1.pack_forget()

其次请确保您之前({1}}和/或label1.pack_forget()之前(我假设是)label1.destroy()

如果您想更新标签,请使用app.mainloop()

示例:

label.config(attributes to update)