我的简化代码(还有一个GameWorld
类,它是根小部件):
class Player(Entity):
# done like this so `ammo` is a readonly property
_ammo = ListProperty()
ammo = AliasProperty(lambda self: self._ammo, bind=['_ammo'])
KV文件:
^{pr2}$弹药的数量应该在屏幕上自动更新。这是因为ammo
与{
什么是解决这个问题的好办法?在
编辑:
同时,我找到了以下解决方案。我自己触发与ammo
关联的事件。在代码中弹药可能会改变的地方,我加了一行:
self.__class__.ammo.dispatch(self)
我通过self.__class__
访问ammo
,因为这给了我ListProperty
对象,而不是列表。然后我调用它上的dispatch(self)
来广播此属性已更改。然后更新GUI。在
如果有人有更好的方法,那就太棒了:)
您可以添加另一个
AliasProperty
:每当
_ammo
更改其长度时,它都将更新。在相关问题 更多 >
编程相关推荐