【问题标题】:How can I bind a property to another property in Kivy?如何将一个属性绑定到 Kivy 中的另一个属性?
【发布时间】:2018-04-01 09:23:01
【问题描述】:

我想将小部件的属性绑定到子小部件的属性。因此,当根小部件属性发生更改时,更改也会传播到子属性。

我是这样尝试的:

self._Child._MyProperty = self._MyProperty

这可行……有时。但有时它不起作用。我不知道它何时起作用,为什么以及在什么条件下不起作用。

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

self.bind(_MyPropert = self._MyPropertyChange)

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

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

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

但在 Kivy,我可以做到:

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

问题是我想用 Python 做,而不是 Kivy。

【问题讨论】:

    标签: python properties kivy


    【解决方案1】:

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

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

    【讨论】:

    • 由于某种原因这对我不起作用。到目前为止,This 是我的代码。但我不明白我在makeLabel() 做错了什么。
    • @FergusWyrm 它有效,它只是没有做任何事情,因为您没有更改绑定到的属性的值。更改您的功能as shown here。你会看到“Lorem ipsum”是如何出现的。
    • 是的。就是这样。我必须弄清楚是否有办法在不实际更改值的情况下手动触发属性事件。
    • @FergusWyrm 明确一点:self.property('c_description').dispatch(self) - 是一种在不更改值的情况下触发属性事件的方法。
    猜你喜欢
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 2020-06-22
    相关资源
    最近更新 更多