I got 2 buttons, respectively named 'ButtonA', 'Bu开发者_如何学PythonttonB'. I want the program to print 'hello, ButtonA' and 'hello, ButtonB' if any button is clicked. My code is as follows:
def sayHi(name):
print 'hello,', name
root = Tk()
btna = Button(root, text = 'ButtonA', command = lambda: text)
btna.pack()
When I click ButtonA, error occurs, text not defined
.
I understand this error, but how can I pass ButtonA's text to lambda?
This should work:
...
btnaText='ButtonA'
btna = Button(root, text = btnaText, command = lambda: sayHi(btnaText))
btna.pack()
For more information take a look at Tkinter Callbacks
text is not a function in your case. Just have it as:
value = 'ButtonA'
btna = Button(root, text = value, command = lambda: sayHi(value))
And you will get that working.
精彩评论