Python/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

您可以使用默认值来克服问题。这是一个有效的示例

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()

最新更新