kivy:"无效的属性名称"有效属性名称的错误消息

时间:2017-11-11 10:32:40

标签: python kivy kivy-language

如果我把它放到主程序中:

class MyTextInput(TextInput):
    def on_focus(self, *args, **kwargs):
        print("Yay!", args, kwargs)

这就进入了kv文件:

#: import MyTextInput __main__.MyTextInput

                MyTextInput:
                    id: e_birth_date
                    text: ""
                    size_hint_x: 1

然后行为是正确的,只要文本输入获得或失去焦点,就会打印出来:

Yay! (<__main__.MyTextInput object at 0x0CC1B8B8>, True) {} 
Yay! (<__main__.MyTextInput object at 0x0CC1B8B8>, False) {}

然而,这根本不起作用:

                TextInput:
                    id: e_birth_date
                    text: ""
                    size_hint_x: 1
                    on_focus = root.on_field_focus(*args)

Kivy拒绝使用以下消息编译.kv文件:

kivy.lang.parser.ParserException: Parser: File "C:\not_telling\app.kv", line 185:
 ...
     183:                        text: ""
     184:                        size_hint_x: 1
 >>  185:                        on_focus = root.on_field_focus(*args)
     186:                    TextInput:
     187:                        id: e_phone
 ...
 Invalid property name

为什么呢?这是一个错误吗?

更新:更改了标题,以便其他人可以轻松找到它(事实证明,它与该特定属性名称无关)。

1 个答案:

答案 0 :(得分:1)

您遇到语法错误,请尝试以下操作:

TextInput:
    id: e_birth_date
    text: ""
    size_hint_x: 1
    on_focus: root.on_field_focus(*args)