Как обратиться к определенному элементу из цикла "for"?

Я изучаю Python и использую tkinter для создания калькулятора с единым полем ввода. Я не могу понять как можно обратиться к определенному элементу в цикле "for".

for var2 in range(6):
    plus_button=tk.Button(win,text="",borderwidth=1,relief="solid",bg="#dadada",font=('tahoma',17))
    plus_button.place(x=2,y=y_margin-4,height=50,width=77,anchor="sw")
    y_margin-=53

Ответы (1 шт):

Автор решения: GrAnd

Если и текст, и функции уже известны, то можно прямо в этом же цикле:

def func1():
    pass
# ....
for text, func in (("text1", func1),
                   ("text2", func2),
                         ....
                   ("text6", func6)):
    plus_button = tk.Button(win, text=text, command=func, borderwidth=1, relief="solid", bg="#dadada", font=('tahoma',17))
    plus_button.place(x=2, y=y_margin-4, height=50, width=77, anchor="sw")
    y_margin -= 53

Если к этим кнопкам в последующем потребуется обращение, то можно сохранить ссылки на них в список:

plus_buttons = []
for text, func in (("text1", func1),
                   ("text2", func2),
                         ....
                   ("text6", func6)):
    plus_buttons.append(tk.Button(win, text=text, command=func, borderwidth=1, relief="solid", bg="#dadada", font=('tahoma',17)))
    plus_buttons[-1].place(x=2, y=y_margin-4, height=50, width=77, anchor="sw")
    y_margin -= 53

Можно и с универсальным обработчиком, передав ему в параметре что-то, что позволит отличить нажатую кнопку:

def btn_func(btn, text):
    if text == "text1":
        pass
# ....
for text in ("text1", "text2", ..., "text6"):
    plus_button = tk.Button(win, text=text, command=lambda: btn_func(text), borderwidth=1, relief="solid", bg="#dadada", font=('tahoma',17))
    ....

Вообще, вариантов и комбинаций уйма, в зависимости от конкретной преследуемой цели.

→ Ссылка