2011-08-03 70 views
9

我得到了2个按钮,分别命名为'ButtonA','ButtonB'。 如果点击任何按钮,我希望程序打印'hello,ButtonA'和'hello,ButtonB'。 我的代码如下:如何将参数传递给Tkinter按钮的回调命令?

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

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

当我点击按钮a,发生错误,text not defined

我明白这个错误,但我怎么能通过ButtonA的文本到lambda?

+1

[传递参数在Python Tkinter的按钮命令]可能重复(http://stackoverflow.com/questions/6920302 /传递参数的功能于蟒-TKinter的按钮命令)。另一个发生在另一个用户5小时之前。惊人的巧合! –

回答

20

这应该工作:

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

欲了解更多信息,看看Tkinter Callbacks

+0

梦幻般的解决方案 –

+0

我需要调用我的函数使用'lambda:self.MyFunction(MyParam)'不知道它的值得一编辑? – WhatsThePoint

2

文本不是你的情况下的功能。只有它:

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

而且你会得到那个工作。

+0

此答案不显示如何打印“你好,<按钮名称>”,就像问题所要求的那样。 –

+0

好的,我没有完全读过这个问题。您只需在之前定义文本值并将其发送到lamdba回调。 –

相关问题