Как передать аргументы команде обратного вызова кнопки Tkinter?

python callback tkinter arguments

28206 просмотра

2 ответа

Я получил 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()

Когда я нажимаю кнопку A, возникает ошибка text not defined.

Я понимаю эту ошибку, но как я могу передать текст ButtonA в лямбду?

Автор: Synapse Источник Размещён: 13.11.2019 11:30

Ответы (2)


23 плюса

Решение

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

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

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

Автор: Ocaso Protal Размещён: 03.08.2011 06:57

3 плюса

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

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

И вы получите это работает.

Автор: Senthil Kumaran Размещён: 03.08.2011 06:57
Вопросы из категории :
32x32