猿问

Tkinter:AttributeError:NoneType对象没有属性get

Tkinter:AttributeError:NoneType对象没有属性get

我创建了这个简单的GUI:


from tkinter import *


root = Tk()


def grabText(event):

    print(entryBox.get())    


entryBox = Entry(root, width=60).grid(row=2, column=1, sticky=W)


grabBtn = Button(root, text="Grab")

grabBtn.grid(row=8, column=1)

grabBtn.bind('<Button-1>', grabText)


root.mainloop()

我启动并运行UI。当我单击Grab按钮时,我在控制台上收到以下错误:


C:\Python> python.exe myFiles\testBed.py

Exception in Tkinter callback

Traceback (most recent call last):

  File "C:\Python\lib\lib-tk\Tkinter.py", line 1403, in __call__

    return self.func(*args)

  File "myFiles\testBed.py", line 10, in grabText

    if entryBox.get().strip()=="":

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

我究竟做错了什么?


慕标琳琳
浏览 8007回答 2
2回答

三国纷争

改变这一行:entryBox=Entry(root,width=60).grid(row=2,&nbsp;column=1,sticky=W)分为以下两行:entryBox=Entry(root,width=60) entryBox.grid(row=2,&nbsp;column=1,sticky=W)正如你已经正确做的那样grabBtn!

蝴蝶不菲

的grid,pack并且place在功能Entry对象和所有其他部件的回报None。在python&nbsp;a().b()中,表达式的结果是任何b()返回,因此Entry(...).grid(...)将返回None。你应该把它分成两行,如下所示:entryBox&nbsp;=&nbsp;Entry(root,&nbsp;width=60) entryBox.grid(row=2,&nbsp;column=1,&nbsp;sticky=W)通过这种方式,您可以将您的Entry参考文件存储起来entryBox并按照您的预期进行布局。如果您收集块中的所有grid和/或pack语句,这会产生额外的副作用,使您的布局更容易理解和维护。
随时随地看视频慕课网APP

相关分类

Python
我要回答