Не могу заставить функцию 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()