但是,所有标签都没有更新。有人可以弄清楚该怎么做吗?
您引用需要的属性是Kivy性质,但
a,
b和
c您引用都只是蟒蛇属性,以便Kivy有没有办法约束他们的变化。
要使用属性,您需要从中继承对象
EventDispatcher(Kivy小部件会自动执行此操作,这就是其属性起作用的原因)。
from kivy.event import EventDispatcherclass DataModel(EventDispatcher): a = StringProperty('') b = StringProperty('') c = StringProperty('') def __init__(self, *args, **kwargs): super(DataModel, self).__init__(*args, **kwargs) self.a = 'This is a' self.b ='This is b' self.bind(a=self.set_c) self.bind(b=self.set_c) def set_c(self, instance, value): self.c = self.a + ' and ' + self.b请注意,这 不是
获得c所需行为的唯一方法(甚至不一定是最佳方法)。您可以用kv语言创建绑定(我通常会那样做),也可以查看Kivy的AliasProperty以获取更类似于您的原始定义的信息。
当然,在声明属性时,您也可以设置a和b的值。



