Задать вопрос
@AleksKc

Как получить текст нажатой кнопки в tkinter?

Есть программа кинотеатр. Значением кнопки является номер кинозала в который нужно перейти. Сами кинозалы формируются при помощи массива. Каким образом можно передать текст кнопки по которой нажали в переменную?
Пробовал сделать подобное на примере с местами в кинозале через библиотеку re, и получилось. Но как можно передавать такие значения в переменные без таких костылей?

from tkinter import *
import re


class Kino():
    def __init__(self):
        self.mas = []
        names = []
        for i in range(10):
            self.name = "Кинотеатр" + str(i)
            names.append(self.name)
        self.root = Tk()
        self.root.geometry("300x500")
        self.root.title("Бронирование мест")
        for i in range(10):
            self.ss = i
            self.but = Button(self.root, text=names[i], background="#ccc", foreground="#555", padx="40", pady="8",
                              font="16", width="12", command=self.for_knopki)
            self.but.pack()
        self.board = list(range(1, 10))
        self.root.mainloop()

    def changeBut(self, event):
        event.widget["background"] = "#ffc801"
        abs = re.search("button(\d+)?", str(event.widget))
        self.mas.append(abs[1])

    def for_knopki(self):
        print(self.ss)
        self.root = Tk()
        for i in range(10):
            for j in range(10):
                self.but = Button(self.root, background="#ccc", foreground="#555", padx="20", pady="8", font="16",
                                  width="1")
                asd = str(i) + str(j)
                if asd in self.mas:
                    self.but["bg"] = "#ffc801"
                self.but.configure()
                self.but["text"] = str(j + 1)
                self.but.bind("<Button-1>", self.changeBut)
                self.but.grid(row=i, column=j)
            self.lab = Label(self.root, text="ряд " + str(i))
            self.lab.grid(row=i, column=(j + 1))

if __name__ == '__main__':
    Kino()
  • Вопрос задан
  • 5758 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
def on_click(event):
    button_text = event.widget.cget('text')

button = Button(root, text='Hello')
button.bind('<Button-1>', on_click)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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