@kapit

Как в цикле присвоить каждой button функцию с оригинальным event?

Нужно, чтобы по срабатыванию кнопки выполнялась функция в которую в зависимости от нажатой кнопки отправлялся соответствующий event. Пытался разобраться как это сделать, сделал так...

TEST = {}
def func(e): print("Нажата кнопка "+str(e))

root = Tk()	
for i in range(1, 10):
	TEST['button'+str(i)] = Button(root, text='Запуск', command=lambda:func(i)).grid(row=i, column=0)
root.mainloop()


... однако, на какую кнопку не нажми, всегда выходит "Нажата кнопка 9".
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
from functools import partial

for i in range(1, 10):
    button_func = partial(func, i)
    TEST['button'+str(i)] = Button(root, text='Запуск', command=button_func).grid(row=i, column=0)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы