Entry().get()在Python 3.4中无法使用

2 投票
1 回答
953 浏览
提问于 2025-04-18 04:40

尽管我尝试了很多方法,但我还是无法让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)

撰写回答