如何在基本小部件的初始化之前在Kivy语言中使用自定义集StringProperty
?
以下代码段中的问题是,当MyInput
类初始化时,属性key
尚未设置,其后的指令将引发KeyError异常。
是否可以设计这样的子类,或者有更好的方法?
MainWidget:
details: some_dictionary[]
MyInput:
key: 'firstkey'
MyInput:
key: 'secondkey'
<MyInput@TextInput>:
key: ''
text: self.parent.details[self.key]
这两点都应该说清楚,但是:
- 我和Kivy一起工作了3天
- 根据key
属性,还有很多其他属性,为了更好地解释我的问题,这些属性已被删除。
Kivy 1.9.1 - Python 3.4.2
答案 0 :(得分:0)
您可以使用默认值来克服您的问题。这是一个工作示例
class TestApp(App):
def build(self):
Builder.load_string("""\
<MyBox>:
details: {'firstkey': 'pop', 'secondkey': 'corn'}
MyInput:
key: 'firstkey'
MyInput:
key: 'secondkey'
<MyInput@TextInput>:
key: ''
text: self.parent.details.get(self.key, '')
""")
return MyBox()
if __name__ == '__main__':
TestApp().run()