У меня есть общий обратный вызов для ряда кнопок. После вызова callback я хочу идентифицировать вызывающего абонента по его ранее назначенному имени. Но я не мог понять в документации Tkinter, как я мог это сделать. Есть идеи?Как я могу получить имя виджета в Tkinter?
Моя программа ок.
def callback(event):
event.widget['text'] # 'name' does not work so
# I have to use the label of the button now, but it is a dirty solution.
root.bind("<Button-1>", cb_button)
Мне нужны имена, потому что я загружаю GUI из JSON с помощью pytkgen.
UPDATE: решение
Джастина выглядит красиво, но почему следующий код печати всегда 9
независимо от того, какая кнопка нажата?
def cb_button(i):
print i
buttons = [('btn'+str(i), i) for i in range(10)]
for (b, i) in buttons:
root.button(b, lambda: cb_button(i))
Что вы подразумеваете под «ранее назначенным именем»? AFAIK, Tkinter [имена виджетов сами по себе] (http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/window-names.html). Программист не имеет возможности назначить их. – Kevin
Зачем вам нужно имя? Что делает для вас то, что эта ссылка не делает? –
Thx для беспокойства, я обновил свой вопрос. Я не хочу проверять все кнопки, чтобы выбрать, на какой из них я нажал. –