.pack_forget()无法正常工作

时间:2015-02-27 13:09:56

标签: python tkinter

我遇到.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()正常工作。为什么缩短方式不起作用?

2 个答案:

答案 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