Вы можете сделать это, используя kivy Property
и метод quote()
, чтобы обновить Property
. Вот способ сделать это в вашем коде:
class MainScreen(FloatLayout):
quote_text = StringProperty('Not Set')
def quote(self, *args):
self.quote_text = 'I often think that the night is more alive and more richly colored than the day. - Vincent van Gogh'
quote_text
- это StringProperty
, на который можно ссылаться в kv
, а метод quote
теперь обновляет это StringProperty
.
А в вашем kv
:
<MainScreen>:
story: story
canvas:
Color:
rgba: 0, 0, 0, 1
Rectangle:
pos: self.pos
size: self.size
Label:
id: story
text: root.quote_text
font_size: '20sp'
size: self.texture_size
pos_hint: {'x': -0.2, 'y': 0.27}
Затем, вызов метода quote()
обновит текст Label
. Чтобы проверить это, вы можете использовать build()
метод вашего App
как:
def build(self):
main = MainScreen()
Clock.schedule_once(main.quote, 5)
return main