Python Tkinter:AttributeError:NoneType对象没有属性
我创建了这个简单的GUI:Python Tkinter:AttributeError:NoneType对象没有属性,python,user-interface,tkinter,Python,User Interface,Tkinter,我创建了这个简单的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('&l
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()
为什么entryBox设置为None?条目对象和所有其他小部件的网格、打包和放置函数都返回None。在python中,当您执行a.b时,表达式的结果是b返回的结果,因此Entry…grid。。。将不返回任何值
您应该将其拆分为两行,如下所示:
entryBox = Entry(root, width=60)
entryBox.grid(row=2, column=1, sticky=W)
这样,您就可以将条目引用存储在entryBox中,并按照您的预期进行布局。这有一个额外的副作用,即如果您在块中收集所有网格和/或pack语句,则布局更易于理解和维护。更改此行:
entryBox=Entry(root,width=60).grid(row=2, column=1,sticky=W)
分为以下两行:
entryBox=Entry(root,width=60)
entryBox.grid(row=2, column=1,sticky=W)
正如您已经正确地为grabBtn所做的一样 对于entryBox.get访问get方法,您需要Entry对象,但Entryroot,width=60。gridrow=2,column=1,sticky=W返回None
entryBox=Entryroot,宽度=60创建一个新的条目对象
此外,您不需要
entryBox=entryBox.gridrow=2,column=1,sticky=W,因为它将用None重写entryBox
只需替换entryBox=entryBox.gridrow=2,column=1,sticky=W
与
谢谢你,亚历克斯。我应该想到的是:-这不是一个被接受的答案的复制品,但11年后?
entryBox=Entry(root,width=60)
entryBox.grid(row=2, column=1,sticky=W)
entryBox = Entry(root, width=60)
entryBox.grid(row=2, column=1, sticky=W)