【问题标题】:get() in Tkinter does not seem to work python [duplicate]Tkinter中的get()似乎不起作用python [重复]
【发布时间】:2015-06-16 18:07:40
【问题描述】:

我正在尝试从 Tkinter 获取“Entry”的内容并将其用作另一个脚本执行的参数。函数 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 条目中的内容时,我得到:

打印 e1.get()

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

【问题讨论】:

    标签: python tkinter get


    【解决方案1】:

    问题在于这种链式调用:

     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)

    【讨论】:

    • 如果有效,您应该将答案标记为已接受。
    • 我刚刚开始,我的声誉目前为零,所以我不能这样做
    • 我认为您可以标记您提出的问题的答案,您只需点击答案旁边的勾号即可。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多