Кнопки создаются в более крупном цикле, повторяющем i, а затем j со следующим кодом:
btn[i][j] = Button(lbl_frm, width=24, height=24, image=unchecked_img,
command=lamda:change_btn_img(btn[i][j]),relief=SOLID)
global state
state = "unchecked"
btn[i][j].place(relx=.5, rely=.5, anchor='c')
с функцией изменения конфигурации кнопки:
def change_btn_img(btn):
global state
if state == "checked":
btn.configure(image=unchecked_img)
state = "unchecked"
elif state == "unchecked":
btn.configure(image=checked_img)
state = "checked"
Однако это не работает, так как если я нажму любую кнопку, это только изменит изображение btn[i][j], где i и j были значениями, достигнутыми на последней итерации цикла. Кнопки используются для формирования сетки, и в этом случае любой щелчок изменяет последний элемент в последней строке. Есть ли способ сделать так, чтобы i и j, используемые при объявлении команды при создании кнопки, были привязаны к этой конкретной кнопке?
command=lamda x=i, y=j:change_btn_img(btn[x][y])
- person furas   schedule 10.02.2021