Проблема - обновить текст метки
как обновить текст до метки. Должен ли я использовать id: s в файле KV и строке
собственность или есть еще какой нибудь способ?
Решение
Есть три варианта решения проблемы.
Вариант 1 - Использование ids
Преимущества использования ids
в том, что приложение меньше, т. Е. Меньше используется кодирование и атрибуты.
Идентификатор является слабой ссылкой на виджет, а не на сам виджет. Как
Как следствие, сохранение идентификатора недостаточно для сохранения виджета от
быть мусором.
...
self.ids
метод очень лаконичен.
Snippets - py file
class FloatLayout(FloatLayout):
...
self.ids.print_label.text = lyrics
Фрагменты - файл kv
<FloatLayout>:
Label:
pos_hint:{"top":1}
id: print_label
text: ""
Атрибут типа Stringproperty создает событие, при котором при изменении значения атрибута все свойства, ссылающиеся на этот атрибут, автоматически обновляются.
Фрагменты - файл py
class FloatLayout(FloatLayout):
print_label = StringProperty('')
...
self.print_label = lyrics
Фрагменты - файл kv
<FloatLayout>:
Label:
pos_hint:{"top":1}
text: root.print_label
Использование Objectproperty для связывания виджета Label
, также требует id
, объявленного в файле kv.
Хотя метод self.ids
очень лаконичен, он обычно
считается «наилучшей практикой» для использования ObjectProperty. Это создает
прямая ссылка, обеспечивает более быстрый доступ и является более явным.
Snippets - файл py
class FloatLayout(FloatLayout):
print_label = ObjectProperty(None)
...
self.print_label.text = lyrics
Фрагменты - файл kv
<FloatLayout>:
print_label: print_label
Label:
pos_hint:{"top":1}
id: print_label
text: ""