Kivy - 有没有办法将Python函数绑定到用kv语言创建的Widgets?

时间:2016-10-06 07:15:38

标签: python kivy kivy-language

我正在尝试创建一个简单的口袋妖怪战斗模拟器。训练师有6个神奇宝贝,存储在一个列表中。我在.kv文件中有标签显示所需的信息 我的问题是,如果我将标签的text属性设置为Python变量:

text: '{}/{}'.format(root.pokemon.stats['cHealth'], root.pokemon.stats['Health'])

然后标签会不断更新,但是当设置为Python函数时:

text: root.pokemon.getHP()

使用getHP()函数:

def getHP(self):
    return '{}/{}'.format(self.stats['cHealth'], self.stats['Health'])

更改运行状况时不会更新,但仅在更改持有神奇宝贝的列表时更新。 (例如,改变了神奇宝贝的顺序)在调用函数时是否有任何方法可以使绑定工作,或者是否必须用返回值替换所有函数调用?

1 个答案:

答案 0 :(得分:1)

kv lang 将自动绑定在其中声明的属性,因此您可以将统计信息发送到您的函数并且将发生绑定:)

text: root.pokemon.getHP(root.pokemon.stats)

每次更改统计数据时,都会调用该函数。