Python / Kivy:在小部件初始化时访问属性

时间:2016-12-13 10:55:27

标签: python kivy kivy-language

如何在基本小部件的初始化之前在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

1 个答案:

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