Python Kivy обновляет текст дочернего виджета в файле KV - PullRequest
0 голосов
/ 13 декабря 2018

У меня проблема с изменением текста Labelwidget, который является дочерним для моего Rootwidget.Я пытаюсь построить часы, и у меня есть рабочий пример часов, но этот пример не использует файл .kv.я пробую следующий код:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.clock import Clock



class myRootWidget(BoxLayout):
    def update(self, *args):
        self.ids.timeDisplay.text = "THE TIME!"

class ll(App):
    def build(self):
        crudeclock = myRootWidget()
        Clock.schedule_interval(crudeclock.update, 1)
        return myRootWidget()


foo = ll()
foo.run()

это мой файл kv:

<myRootWidget>:
    orientation: "vertical"

    Label:
        id : timeDisplay
        text : "blank"
    Label:
        text: "foo!"
    Button:
        id: myBtn
        text: "press me"    

Код выполняется без ошибок, но, несмотря на то, что update () запускается каждую секунду, меткавместо «ВРЕМЯ!» отображается «пусто», что необходимо для обновления времени.Почему нет ошибки?Похоже на self.ids.timeDisplay.фактически обрабатывает метку, но текст не изменится.

1 Ответ

0 голосов
/ 13 декабря 2018

Проблема заключается в том, что вы создаете два экземпляра класса myRootWidget Один, который вы назначаете переменной crudeclock, а другой - тот, который возвращает строитель и создает приложение.

Вы назначаете первыйодин на часы и работает нормально, но вы не можете его видеть.

Вы смотрите на второй.

Решение состоит в том, чтобы использовать один экземпляр, например:

class ll(App):
    def build(self):
        crudeclock = myRootWidget()
        Clock.schedule_interval(crudeclock.update, 1)
        return crudeclock
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...