@AleksKc

Можно ли через цикл привязать переменную к кнопкам в GUI, и затем вызывать их?

Работаю с библиотекой Tkinter. Суть программы - кинотеатр, т.е. выбирается кинозал, а затем места. Я создал кинозалы через цикл, затем при нажатии по любой из кнопок открывается список мест. Мне нужно сделать, чтобы при нажатии на разные кнопки - открывались разные кинозалы. Знаю, что такое можно сделать создав каждую кнопку отдельно, и задать ей определенную переменную через command. Но можно ли задавать переменные к кнопкам через массив если их будет N число?

from tkinter import *

def changeBut(event):
    event.widget["background"] = "red"

def for_knopki():
    root = Tk()
    for i in range(10):
        for j in range(10):
            but = Button(root,
                         background="#ccc",
                         foreground="#555",
                         padx="20",
                         pady="8",
                         # state= 'active',
                         font="16",
                         width="1",
                         )
            but.configure()
            but["text"] = str(j + 1)
            but.bind("<Button-1>", changeBut)
            # but.bind("<Button-1>", lambda event, but=but: changeBut(event, but))
            but.grid(row=i, column=j)
        lab = Label(root, text="ряд " + str(i))
        lab.grid(row=i, column=(j + 1))


names = []
for i in range(10):
    name = "Кинозал №" + str(i)
    names.append(name)
root = Tk()
root.geometry("300x250")
root.title("Бронирование мест")
for i in range(10):
    but = Button(root, text=names[i],  # текст кнопки
                 background="#ccc",  # фоновый цвет кнопки
                 foreground="#555",  # цвет текста
                 padx="40",  # отступ от границ до содержимого по горизонтали
                 pady="8",  # отступ от границ до содержимого по вертикали
                 font="16",  # высота шрифта
                 width="12",  # ширина кнопки
                 command=for_knopki
                 )
    but.pack()

board = list(range(1, 10))
root.mainloop()
  • Вопрос задан
  • 724 просмотра
Пригласить эксперта
Ответы на вопрос 1
Передавайте аргументы в ваш command. Вот пара способов
https://www.delftstack.com/howto/python-tkinter/ho...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы