Мне нужно добавить серию меток в макет экрана - количество меток определяется во время выполнения - и обновить тексты меток данными времени выполнения. Следовательно, мне нужно добавлять метки программно.
Я создал небольшую тестовую программу для исследования поведения:
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, затем метка будет обновлена, как и ожидалось.
Однако мне не удалось добавить метку с кодом в том виде, в каком он есть .
Чего мне не хватает?
Вся помощь с благодарностью получена!