我已经定义了一个Root类,并在Root的 init 中定义了一个value(val)。当我尝试绑定到val时,出现错误“ KeyError:'val'”。
我已经创建了Root()的实例根,并尝试以这种方式绑定“ val”,同样的错误。我还尝试从实例根定义'val',然后将其绑定
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
class Root(FloatLayout):
def __init__(self,**kwargs):
super(Root).__init__(**kwargs)
self.val = 1
self.bind(val=lambda x,y: print(y))
class TestApp(App):
def build(self):
return Root()
if __name__ == '__main__':
TestApp().run()
我如何成功绑定到val?我在做什么错?
答案 0 :(得分:0)
由于您也必须提交super
参考,因此您似乎在错误地称self
。
应该是:
super(Root, self).__init__(**kwargs)
或者使用Python 3,您可以将其简化为:
super().__init__(**kwargs)
答案 1 :(得分:0)
在浏览了kivy文档之后,我意识到了自己的错误。应该在初始化之前使用kivy.property声明'val'
class Root(FloatLayout):
val = NumericProperty(1)
def __init__(self,**kwargs):
super().__init__(**kwargs)
self.bind(val=lambda x,y: print(y)) #: Prints 1
发布之前,我应该做更多的研究,但是无论如何,希望这对遇到同样问题的其他人有所帮助。