我遇到.pack_forget()
功能问题。如果我写:
a1= Button(root, text='button', width=10, command=buttonclick).pack()
function a1.pack_forget()
返回错误:
AttributeError: 'NoneType' object has no attribute 'pack_forget'
但如果我写:
a1= Button(root, text='button', width=10, command=buttonclick)
a1.pack()
函数a1.pack_forget()
正常工作。为什么缩短方式不起作用?
答案 0 :(得分:4)
在python中,当您执行x=foo().bar()
时,x
的值为bar()
。因此,对于ai=Button(...).pack(...)
,ai
获取pack(...)
的值。
使用tkinter,pack(...)
和grid(...)
以及place(...)
都会返回None
。因此,在您的代码ai
中设置为None
。这就是tkinter和python如何设计工作的。
答案 1 :(得分:1)
方法pack()
返回None
。你必须写:
ai = Button(...)
ai.pack()
第一行将Button
对象分配给变量ai
,而类似
ai = Button(...).pack()
会将其分配给None
。