Как передать аргументы команде обратного вызова кнопки Tkinter? - PullRequest
11 голосов
/ 03 августа 2011

Я получил 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 в лямбду?

Ответы [ 2 ]

23 голосов
/ 03 августа 2011

Это должно работать:

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

Для получения дополнительной информации взгляните на Обратные вызовы Tkinter

3 голосов
/ 03 августа 2011

текст не является функцией в вашем случае. Просто имейте это как:

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

И у вас все получится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...