Kivy - привязать текст метки к переменной (только Python)
Я уже давно пытаюсь заставить свои ярлыки автоматически обновляться, и я прочитал более десятка вопросов StackOverflow, но безрезультатно.
У меня есть глобальный объект, который содержит целочисленное значение, которое я хочу отображать с меткой внутри одного из моих классов виджетов.
Класс виджета выглядит так:
class Battle(Widget):
def __init__(self, **kwargs):
super(Battle, self).__init__(**kwargs)
#Enemy Stats
self.enemyBar = BoxLayout(orientation="horizontal", size=(Window.width, Window.height/8), center_y = Window.height - self.height/2)
self.enemyBar.add_widget(Label(text=enemy.name))
#Enemy Health Label
health_label = Label(text=str(enemy.health))
self.enemyBar.add_widget(health_label)
self.add_widget(self.enemyBar)
def update_health(instance, value):
health_label.text = str(enemy.health) #<-- Error happens here
enemy.bind(health=update_health)
Когда значениеenemy.health
в программе, я хочу, чтобы мой лейбл тоже менялся. Я не хочу использовать какой-либо язык kivy, потому что я предпочитаю иметь только один основной файл python.
Вражеский объект создается с помощью класса сущностей. Вот код сущности:
class entity(Widget):
#entity creation
health = NumericProperty()
def __init__(self, health):
self.health = health
Когда я запускаю код, я нажимаю кнопку, которая вызывает функцию, которая изменяет здоровье врага, и затем я получаю ошибку:
глобальное имя 'health_label' не определено
Каким-то образом, когда вызывается функция update_health, программа не видит переменную health_label, созданную в init.