Не могу заставить функцию label работать корректно

Используя библиотеку kivy пытаюсь написать игру-кликер, и для выводы нажатий использую функцию label, но когда пытаюсь сделать счётчик нажатий выдаёт ошибку "ValueError: Label.text accept only str" Вот код:

def build(self):
    b1 = BoxLayout()
    f1 = FloatLayout()

    self.lbl = Label(text='0', font_size=20, pos_hint={'center_y': 0.95, 'center_x': 0.95})
    b1.add_widget(self.lbl)

    self.button1 = Button(text='1', size_hint=(0.15, 0.15), pos_hint={'center_y': 0.05, 'center_x': 0.07})
    button2 = Button(text='2', size_hint=(0.15, 0.15), pos_hint={'center_y': 0.05, 'center_x': 0.22})
    button3 = Button(text='3', size_hint=(0.15, 0.15), pos_hint={'center_y': 0.05, 'center_x': 0.78})
    button4 = Button(text='4', size_hint=(0.15, 0.15), pos_hint={'center_y': 0.05, 'center_x': 0.93})
    button5 = Button(text='cliker', size_hint=(0.5, 0.5), pos_hint={'center_y': 0.5, 'center_x': 0.5})
    button5.bind(on_press=self.clk5)
    f1.add_widget(self.button1)
    f1.add_widget(button2)
    f1.add_widget(button3)
    f1.add_widget(button4)
    f1.add_widget(button5)
    f1.add_widget(b1)
    return f1


def lbl_inctementer(self, args):
    self.lbl.text = str(int(self.lbl.text) + 1)

def clk5(self, args):
    self.lbl.text = self.lbl_inctementer

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

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

Ошибка возникает потому, что вы в текст метки пытаетесь записать метод класса, а нужно записывать текст. Нужно или вообще убрать этот дополнительный метод, и выполнять те же действия сразу внутри метода clk5:

def clk5(self, instance):
    self.lbl.text = str(int(self.lbl.text) + 1)

Или вызывать этот метод, а не записывать его внутрь текста метки (параметр args убрал за ненадобностью):

def lbl_inctementer(self):
    self.lbl.text = str(int(self.lbl.text) + 1)

def clk5(self, instance):
    self.lbl_inctementer()
→ Ссылка