13

I got 2 buttons, respectively named 'ButtonA', 'ButtonB'. 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?

Aziz Shaikh
  • 15,647
  • 11
  • 58
  • 78
Synapse
  • 1,504
  • 5
  • 18
  • 19

2 Answers2

27

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

Ocaso Protal
  • 18,151
  • 8
  • 74
  • 79
3

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.

Senthil Kumaran
  • 51,269
  • 14
  • 86
  • 124