Python3:按tkinter.button调用函数

时间:2014-06-30 16:06:02

标签: python python-3.x tkinter

请注意,这是用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中可见但是当按下时没有任何反应:(

1 个答案:

答案 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}}