В app.kv файле есть кнопка:Как обновить текст на виджет в Киви?
Button:
text: var1
Иногда var1 изменения. Как изменить текст на кнопке (или метке и т. Д.) Без явных назначений атрибутов в коде?
В app.kv файле есть кнопка:Как обновить текст на виджет в Киви?
Button:
text: var1
Иногда var1 изменения. Как изменить текст на кнопке (или метке и т. Д.) Без явных назначений атрибутов в коде?
Kivy может сделать это автоматически для вас - но только если var1 является kivy-свойством. Вы можете узнать о них подробнее here
Если этого не произошло, это означает, что var1 не является свойством kivy. Вы должны установить их в качестве атрибутов класса, например .:
class MyWidget
var1 = NumericProperty()
[...]
, а затем в Kv:
MyWidget:
Button:
text: root.var1
или что вы хотите. Пока значение, которое вы устанавливаете, является свойством kivy, оно должно работать. Иногда, если значение на правой стороне является сложным (text: "" if root.var is None else getattr("mystring", root.var)
), все не так легко получается, но если вы запустите в этом случае, есть другие вопросы, связанные с stackoverflow, которые вам помогут.
Вы можете получить доступ к собственности напрямую, конечно. Нет необходимости делать text: var1
. Это довольно распространенные способы, но кроме них есть даже setattr()
или некоторые другие.
Благодаря примеру:
<Buttons_Root>:
Button:
id: mybutton
→ ру:
b = Buttons_Root()
b.ids.mybutton.text = 'something'
Через своего родителя:
<MyBoxLayout>:
Button:
→ ру:
box = MyBoxLayout()
box.children[0].text = 'something'