我很难理解为什么这段非常简单的代码不起作用。基本上它应该打印你输入的任何东西。它运行时没有错误,但是当我在条目小部件中输入一些东西并按下提交按钮时,它没有打印出任何东西。我使用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()
。您所需要做的就是传递引用,而不是完整的函数调用,因为这样就传递了返回值:
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。回调只需要函数的引用,而不需要函数调用来获得返回值。在本例中为None,使按钮不做任何事情。
b = Button(window, text = "Submit", command = GET())
请注意,通过执行command=GET()
,您调用函数GET
,然后将其返回值(在本例中为None
)传递给command
参数。
相反,你应该做command=GET
。这将把函数GET
传递给command
参数,而不是其返回值。