如何使用动态类将信息从子类传递给kvlang中的父类?
我有以下简单的kv代码和Python代码:
KV:
BoxLayout:
Label:
id: label_id
text: 'label'
Button1:
mylabel: label_id
text: self.mylabel.text
<Button1@Button>:
的Python:
import kivy
from kivy.app import App
class Test2App(App):
pass
if __name__ == '__main__':
Test2App().run()
这样做,使Button的文本与标签的文本相同。
但我想要做的是在父类中设置Button的文本:
BoxLayout:
Label:
id: label_id
text: 'label'
Button1:
mylabel: label_id
<Button1@Button>:
text: self.mylabel.text
这显然会导致错误,因为Button1不知道mylabel。但我希望它是。我知道我可以通过在Python文件中声明一个属性来解决这个问题,但我宁愿单独在kv文件中找到解决方案。
有没有人知道该怎么做?
修改
有趣的是,我能够将信息作为StringProperty传递。以下代码有效,我在按钮上输入了正确的文字:
BoxLayout:
Label:
id: label_id
text: 'label'
Button1:
my_label_text: label_id.text
<Button1@Button>:
my_label_text: ''
text: self.my_label_text
有谁知道如何将整个标签(作为对象)传递给父母?
答案 0 :(得分:1)
试试这个:
BoxLayout:
Label:
id: label_id
text: 'label'
Button1:
mylabel: label_id
<Button1@Button>:
mylabel: None
text: self.mylabel.text if self.mylabel is not None else ''
mylabel: None
会自动创建一个属性。