Tkinter中的get()似乎不起作用python

时间:2015-06-16 18:07:41

标签: python tkinter get

我正在尝试获取" Entry"的内容。来自Tkinter并将其用作另一个脚本执行的参数。函数get()似乎不起作用:

import Tkinter
master = Tkinter.Tk()

master.geometry('200x100')

def callback():
    #execfile("Hello.py")
    print e1.get()

L1 = Tkinter.Label(master, text="Files").grid(row=1)
L2 = Tkinter.Label(master, text="Dice score").grid(row=2)

e1 = Tkinter.Entry(master, bg="white").grid(row=1, column=1)
e2 = Tkinter.Entry(master, bg ="white").grid(row=2, column=1)

B = Tkinter.Button(master, text="Start script", command = callback).grid(row=0, column=0)

master.mainloop()

当我执行此脚本并按下按钮而不是打印e1条目中的内容时,我得到:

print e1.get()

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

1 个答案:

答案 0 :(得分:2)

问题在于这种链式呼叫:

 e1 = Tkinter.Entry(master, bg="white").grid(row=1, column=1)

grid方法(以及pack会返回Entry对象。 因此,虽然创建条目的调用成功并返回一个新条目, 并且对.grid的调用也成功,后来返回None,即 您保存在L1, L2, e1, e2, B变量中的对象。

对于所有这些人,你应该用两行展开grid电话 - 就像 这个,否则,你不会在Python中引用tkinter对象:

e1 = Tkinter.Entry(master, bg="white"); e1.grid(row=1, column=1)
e2 = Tkinter.Entry(master, bg ="white"); e2.grid(row=2, column=1)

(如果你尝试用你的代码打印这些变量,你可以检查一下 - 你会看到包含None)