Я пытаюсь создать приложение с графическим интерфейсом для работы с API оттенков Philips, используя Python и Tkinter.В настоящее время у меня есть словарь объектов Python, который зацикливается для создания кнопки для каждого объекта, то есть, например, текст кнопки имеет имя элемента или источника света.
Проблема возникает, когда я используюоператор команды.Каждая кнопка имеет командную функцию, которая содержит функцию, которую я хотел бы вызвать при нажатии кнопки.
Кнопка выполнена нормально, с правильными значениями текста в них, но проблема возникает, когда я нажимаю на кнопкувызывается функция, относящаяся к объекту (в данном случае называемая itemClick), она передает объект, который должен находиться на последней кнопке или в конце цикла.
Я пытался использоватьФункция «связать» на кнопке, но в этом случае кнопка была нажата столько раз, сколько прошел цикл.
lightsButtonDict = {}
for item in lightlist:
print(lightlist[item].getName())
lightsButtonDict[lightlist[item].getName()] = tk.Button(lightsFrame, text=lightlist[item].getName(), command=lambda: itemClick(lightsFrame, 'light', lightlist[item]))
lightsButtonDict[lightlist[item].getName()].pack()
Где я объявляю command = lambda: itemClick(lightsFrame, 'light', lightslist[item])
для кнопкищелчок по последнему списку источников света [элемент] будет передан в функцию, а не тот, что в цикле, т. е. если есть 10 кнопок и вы нажмете 3-ю, 10-й объект будет передан в itemClick (извините, если это звучит немногоперемешался, надеюсь, это понятно)
Я бы хотел передать объект, который связан с этим текущим циклом, поэтому, если нажать на 3-ю кнопку,передается третий объект и т. д.
TIA.