0
好让说,我想这个标签在一些小部件使用的文本来自标签其他窗口内:如何从Kivy中的其他窗口部件访问某些窗口小部件属性?
<[email protected]>:
Label:
text: str(root.parent.ids.first.text)
<RootWidget>:
Label:
id: first
center_x: 100
text: "text"
SubWidget:
id: second
center_x: 200
这工作,但似乎并没有很好的解决方案。如果我将first
置于另一个小部件中,则需要将代码中的引用更改为它(可能导致错误)。
我的第一个想法是,至少在根级别和引用来引用存储first
:
<[email protected]>:
Label:
text: str(root.parent.l.text)
<RootWidget>:
l: first
Label:
id: first
center_x: 100
text: "text"
SubWidget:
id: second
center_x: 200
但是这会导致异常:
AttributeError: 'NoneType' object has no attribute 'text'
这是令人困惑的,因为如果我我会写text: str(root.parent.l)
之类的东西,我会看到Label object
而不是NoneType
。
所以我有两个问题:
- 为什么没有第二个解决方案的工作?如何修复?
- 一般来说,从另一个小部件访问某些小部件属性的最佳方式是什么?我可以使它独立于小部件层次结构吗?