Kivy - добавление меток для запланированного или управляемого событиями обновления в python - PullRequest
0 голосов
/ 07 апреля 2020

Мне нужно добавить серию меток в макет экрана - количество меток определяется во время выполнения - и обновить тексты меток данными времени выполнения. Следовательно, мне нужно добавлять метки программно.

Я создал небольшую тестовую программу для исследования поведения:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.widget import Widget
from kivy.uix.label import Label
from kivy.properties import StringProperty
import random

Builder.load_string('''
<YourWidget>:
    BoxLayout:
        size: root.size
        Button:
            id: button1
            text: "Change text"
            on_release: root.change_text()
#        Label:
#            id: label1
#            text: root.random_number
''')

class YourWidget(Widget):
    random_number = StringProperty()

    def __init__(self, **kwargs):
        super(YourWidget, self).__init__(**kwargs)
        label = Label(
                      id= 'label1',
                      text = root.random_number
                     )
        self.add_widget(label)
        self.random_number = str(random.randint(1, 100))

    def change_text(self):
        self.random_number = str(random.randint(1, 100))

class updatetest(App):
    def build(self):
        return YourWidget()

#if __name__ == '__main__':
if (True):
    updatetest().run()

Если я раскомментирую три строки, относящиеся к метке в построителе. load_string и удалите строки label = & self.add_widget из кода python, затем метка будет обновлена, как и ожидалось.

Однако мне не удалось добавить метку с кодом в том виде, в каком он есть .

Чего мне не хватает?

Вся помощь с благодарностью получена!

...