Entry().get()在Python 3.4中无法使用
尽管我尝试了很多方法,但我还是无法让Entry().get()在输入框中赋值一个字符串。下面是我的代码片段:
Itx_bcn_ent = Entry(win).grid(row=1,column=1)
我定义了一个按钮来调用一个函数:
btn = Button(win,text="Run",command=getnums).grid(row=5,column=3,padx=100)
这是这个函数的内容:
def getnums():
Itx_bcn = Itx_bcn_ent.get()
当我运行这个脚本时,我遇到了以下错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python34\lib\tkinter\__init__.py", line 1482, in __call__
return self.func(*args)
File "C:\Python34\voltage_substate_GUI.py", line 7, in getnums
Itx_bcn = Itx_bcn_ent.get()
AttributeError: 'NoneType' object has no attribute 'get'
我看到有一种方法是使用类StringVar()和Entry()对象的“textvariable=”选项,但这样做似乎太复杂了,因为它在输入框和我想赋值的变量之间又多了一层变量。
对此有什么想法吗?
1 个回答
3
Entry.grid()
这个方法返回的是 None
,所以当你写 something = Entry(root).grid()
的时候,实际上 something
就是 None
。
这在你不使用这个东西的时候没问题!但一旦你想用它,就会出现 'NoneType' object has no attribute 'get'
这样的错误。
Itx_bcn_ent = Entry(win)
Itx_bcn_ent.grid(row=1,column=1)
现在你的按钮可以正常工作了 :),不过你在 btn =
这一行也遇到了同样的问题。我还没有需要重复使用这个赋值,所以也许可以直接去掉它?
Button(win,text="Run",command=getnums).grid(row=5,column=3,padx=100)