Проблема заключается в области видимости переменных, в .kv есть по крайней мере следующие способы доступа к элементу:
- id
:
<A>:
id: a
property_a: b.foo_property
<B>:
id: b
property_b: a.bar_property
Используется для ссылки на любой узел в дереве.
- self
:
<A>:
property_a: self.foo_property
B:
property_b: self.bar_property
Когда используется self
, это означает, что тот же самый узел ссылается на себя, в предыдущем примере property_b: self.bar_property
указано, что свойство property_b
из b
будет принимать то же значение, что и bar_property
из b
. Он используется так же, как и в классах Python.
- root
:
<A>:
B:
property_b: root.bar_property
<C>:
D:
property_d: root.bar_property
Использование root
при ссылке на корень дерева, например, property_b: root.bar_property
указывает, что property_b
из b
примет то же значение, что и bar_property
из a
. И в случае property_d: root.bar_property
это означает, что property_d
из d
будет иметь то же значение, что и bar_property
из c
.
Учитывая вышеизложенное, также возможны следующие решения:
1
<PleaseWork>
orientation: 'vertical'
Label:
text: str(round(root.a, 1))
Label:
id: count_up
text: str(round(root.b, 1))
2
<PleaseWork>
orientation: 'vertical'
id: please_work
Label:
text: str(round(please_work.a, 1))
Label:
id: count_up
text: str(round(please_work.b, 1))