Текст надписи при нажатии кнопки не меняется
Почему не текст надписи при нажатии кнопки не меняется. Объясните пожалуйста, что я сделал не так
from kivy.app import App
from kivy.lang import Builder
activity = '''
BoxLayout:
orientation: 'vertical'
Label:
id: lbl_time_now
text: '00'
font_size: 60
Button:
text: 'Start'
font_size: 60
on_press: app.something
'''
class TimeCountApp(App):
def build(self):
return Builder.load_string(activity)
def something(self, instance):
self.lbl_time_now.text = '01'
if __name__ == '__main__':
TimeCountApp().run()
Ответы (1 шт):
Автор решения: Александр Рассказчиков
→ Ссылка
В строке on_press: app.something вы забыли поставить скобки, таким образом не вызывая функцию.
Я поставил скобки (on_press: app.something()) и передал в эту функцию аргументом родителя этих элементов, чтобы после получить Label и поменять в нём текст. Также, я добавил lbl_time_now в kv-строку, чтобы элемент lbl_time_now отображался в ids.
from kivy.app import App
from kivy.lang import Builder
activity = '''
BoxLayout:
orientation: 'vertical'
lbl_time_now: lbl_time_now
Label:
id: lbl_time_now
text: '00'
font_size: 60
Button:
text: 'Start'
font_size: 60
on_press: app.something(self.parent)
'''
class TimeCountApp(App):
def build(self):
return Builder.load_string(activity)
def something(self, root):
root.ids.lbl_time_now.text = '01'
if __name__ == '__main__':
TimeCountApp().run()