在基本窗口基础的唯一化之前,我如何使用自定义集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
您可以使用默认值来克服问题。这是一个有效的示例
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()