输入函数不适用于简单程序

Entry function not working for simple program

我很难理解为什么这段非常简单的代码不起作用。基本上它应该打印出您键入的任何内容。它运行没有错误,但是当我在条目小部件中键入内容并按下提交按钮时,它不会打印出任何内容。我正在使用 Python 3.xx。

from tkinter import *

window = Tk()

def GET():
    typed = e.get()
    print(typed)

e = Entry(window)
e.pack()
b = Button(window, text = "Submit", command = GET())
b.pack()
window.mainloop()

您需要做的是将命令设置为 GET 而不是 GET()。您需要做的就是传递引用,而不是完整的函数调用,因为那样会传递 return 值:

from tkinter import *

window = Tk()

def GET():
    typed = e.get()
    print(typed)

e = Entry(window)
e.pack()
b = Button(window, text = "Submit", command = GET) # GET not GET()
b.pack()
window.mainloop()

现在,它将相应地执行GET。回调只需要函数的引用,而不是将获得 return 值的函数调用。在这个例子中是 None 并且使按钮什么都不做。

b = Button(window, text = "Submit", command = GET())

请注意,通过执行 command=GET(),您将调用函数 GET,然后将其 return 值(在本例中为 None)传递给 command 参数。

相反,您应该 command=GET。这会将函数 GET 传递给 command 参数而不是它的 return 值。