#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()
我得到了同样的错误。 我希望能够从屏幕上取下标签,这样我就可以 在屏幕上放置一个更新的标签。
答案 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)