Вопрос:

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

python callback tkinter arguments

28206 просмотра

2 ответа

681 Репутация автора

Я получил 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 Источник Размещён: 03.08.2011 06:45

Ответы (2)


3 плюса

38440 Репутация автора

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

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

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

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

23 плюса

14576 Репутация автора

Решение

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

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

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

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