请注意,这是用python 3编写的
我正在使用Tkinter,我正试图通过按下tk窗口中的按钮来调用foo函数并获得" Hello World!"打印,我做错了什么?
from tkinter import *
window1 = Tk()
class WidgetCreate(object):
def __init__(self, widget_type, window_num, text_str, fun, numr, numc):
self.obj = Button(window_num, text=text_str, command=lambda: fun)
self.obj.grid(row=numr, column=numc)
def foo():
print("Hello World!")
but1 = WidgetCreate("Button", window1, "This Button 1", foo, 1, 1)
window1.mainloop()
按钮在to-window中可见但是当按下时没有任何反应:(
答案 0 :(得分:2)
您错过command
Button
参数中的括号。self.obj = Button(window_num, text=text_str, command=lambda: fun())
。所以你的lambda函数没有调用你想要的函数。它必须是:
fun
或者更简单的是,在没有lambda函数的情况下执行此操作并直接将self.obj = Button(window_num, text=text_str, command=fun)
作为参数:
{{1}}