在app.kv文件中有一个按钮:
Button:
text: var1
有时var1会发生变化。如何在代码中没有明确的属性赋值的情况下更改按钮(或标签等)上的文本?
答案 0 :(得分:0)
当然,您可以直接进入酒店。无需执行text: var1
。这些是非常常见的方式,但除了它们之外,甚至还有setattr()
或其他一些方式。
通过其实例:
<Buttons_Root>:
Button:
id: mybutton
→py:
b = Buttons_Root()
b.ids.mybutton.text = 'something'
通过其父级:
<MyBoxLayout>:
Button:
→py:
box = MyBoxLayout()
box.children[0].text = 'something'
答案 1 :(得分:0)
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问题可以帮助你。