如何将参数传递给Tkinter按钮的回调命令?

时间:2011-08-03 06:45:29

标签: python callback tkinter arguments

我有2个按钮,分别命名为'ButtonA','ButtonB'。 如果点击任何按钮,我希望程序打印'hello,ButtonA'和'hello,ButtonB'。 我的代码如下:

def sayHi(name):
    print 'hello,', name

root = Tk()
btna = Button(root, text = 'ButtonA', command = lambda: text)
btna.pack()

当我点击ButtonA时,会发生错误text not defined

我理解这个错误,但是如何将ButtonA的文本传递给lambda?

2 个答案:

答案 0 :(得分:23)

这应该有效:

...
btnaText='ButtonA'
btna = Button(root, text = btnaText, command = lambda: sayHi(btnaText))
btna.pack()

有关详细信息,请查看Tkinter Callbacks

答案 1 :(得分:3)

在您的情况下,

文本不是一个函数。只需将其作为:

value = 'ButtonA'
btna = Button(root, text = value, command = lambda: sayHi(value))

你会得到这个。