2017-11-11 235 views
0

如果我把这个到主程序中的错误信息:kivy:“无效的属性名称”为有效的属性名称

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 

为什么?这是一个错误?

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

回答

1

你有一个语法错误,试试这个:

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

我的错。我会立即删除我的问题,但我不会因为一个原因。该消息说“无效的属性名称”,而不是“语法错误”。很混乱! – nagylzs

+0

我想冒号前的所有内容都被认为是类名或属性 –

+0

,如果编译器没有看到冒号,他会给出无效的属性名称消息 –