Я пытаюсь создать интерактивное школьное расписание с использованием Kivy, но у меня постоянно возникают проблемы с изменением текста кнопки на основе ее названия. Я создал сетку, в которой каждая кнопка имеет уникальное имя, например, первая кнопка в понедельник - one_mon
, следующая - two_mon
и так далее. Я создал класс, который наследуется от Button
, и вот код Kivy и Python для этого класса:
<Tile>:
background_color: [.5, .9, 1, 1]
halign: "center"
size_hint: None, None
size: 96, 96
text: self.lesson
on_press: self.on_press()
on_release: self.on_release()
Вот код Python для плитки
class Tile(Button):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.lesson = ""
self.sub_press = ""
self.check()
self.text = self.lesson
def check(self):
if self.name == "one_mon":
self.text = "English"
self.sub_press = "Room nr. 42 \n Mr. Hetman"
...
else:
self.lesson = "None"
self.sub_press = "None"
def on_release(self):
self.text = self.lesson
self.background_color = [.5, .9, 1, 1]
def on_press(self):
self.text = self.sub_press
self.background_color = [.01, .9, 1, 1]
Использование print(self.name)
в on_press
функция класса Tile
работает нормально и возвращает имя кнопки, но использование if self.name == "one_mon"
вызывает AttributeError 'Tile' object has no attribute 'name'
Вот код для хранения родительского виджета все эти кнопки вместе:
<PlanChart>:
cols: 11
padding: 2
Tile:
id: one_mon
name: "one_mon"
Tile:
id: two_mon
name: "two_mon"
Tile:
id: three_mon
name: "three_mon"
......
Tile:
id: ten_fri
name: "ten_fri"
Как назначить другой текст кнопке на основе ее идентификатора или имени? Я не могу просто назначить текст каждой кнопке индивидуально, потому что в будущем я хочу иметь возможность переключаться между разными студентами, чье расписание может выглядеть иначе.