我正在尝试获取" 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'
答案 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)