小部件等于无

时间:2014-12-17 13:09:31

标签: python python-3.x tkinter nonetype

我使用Tkinter制作GUI,允许在其中一个窗口中输入数据:

enterscore = Entry(window4, font="Helvatica 25", textvariable = newscore).pack()

我正在尝试创建一个按钮,将输入的数据保存为变量:

savebttn = Button(window4, text= "Save", width=5, height=2, font="Helvatica 25", command = savescore).pack()

其中:

def savescore():
    score = enterscore.get()

但是,如果我运行该程序,它将返回错误消息:

AttributeError: 'NoneType' object has no attribute 'get'

我哪里错了?

2 个答案:

答案 0 :(得分:3)

不要这样做:

enterscore = Entry(window4, font="Helvatica 25", textvariable = newscore).pack()

调用pack会返回None,而不是小部件。 tkinter不支持这种方法链接。而是做:

enterscore = Entry(window4, font="Helvatica 25", textvariable = newscore)
enterscore.pack()

这构造了窗口小部件,并将enterscore设置为指向它。然后调用enterscore.pack与上面的效果相同,但eneterscore指向正确的对象(小部件,而不是None

答案 1 :(得分:1)

pack方法返回None。您需要将创建Entry的语句与打包的statemetn分开。

enterscore = Entry(window4, font="Helvatica 25", textvariable=newscore)
enterscore.pack()

savebttn相同。