将属性绑定到kivy中的另一个属性

时间:2017-10-20 08:25:50

标签: properties kivy

在kivy中我想将窗口小部件的属性绑定到子窗口小部件的属性。因此,当更改根窗口小部件属性时,更改也会传播到子属性。

我用这种方式试了一下:

self._Child._MyProperty = self._MyProperty

它有效......有时候。但有时它不起作用。我无法找出它何时起作用或为什么以及在哪些条件下它不起作用。

在所有情况下,我都绑定了根小部件中的方法:

self.bind(_MyPropert = self._MyPropertyChange)

在所有情况下都会调用此方法,但有时更改不会传播到子属性。

即使感觉非常自然,这也不起作用:

self.bind(_MyProperty = self._Child._MyProperty)

但我用kivy语言可以做到:

<RootWidget>
    <ChildWidget>
        _MyProperty: self.parent._MyProperty

但我想用python而不是用kv语言来做。

有没有人有想法,如何正确地做到这一点?

1 个答案:

答案 0 :(得分:0)

要将一个属性绑定到另一个属性,您应该使用setter

self.bind(_MyProperty=self._Child.setter('_MyProperty'))