Kivy,KV语言的dynimic课程

时间:2016-11-11 23:47:22

标签: python python-3.x kivy kivy-language

我试图在我的KV语言上使用规则在on上生成类,但我总是收到错误。

<SimpleInputLayout>:
    orientation: 'vertical'

    message_label: message
    user_input: input

    Label:
        id: message
        text: root.message_to_user
    FloatInput: if input_type == 'float' else TextInput:
        id: input
        focus: True

如果input_type相等'float',我可以做些什么来做input我想FloatInput班级为TextInput,否则为public class departures { public Dictionary<int, List<Departure>> BusDepartures {get; set; } }

1 个答案:

答案 0 :(得分:0)

单独使用kv lang是不可能的。至少不是直接的。你有4个选择:

  1. 根据小部件的属性设置input_type

    TextInput:
        hint_text: 'int'
        input_type: 'int' if self.hint_text == 'int' else 'float'
    
  2. 从外部更改input.input_type属性(如果差异仅为输入类型)

  3. 动态添加正确的小部件,例如关于某些事件的<parent>.add_widget(Factory.FloatInput()),请说on_release
  4. Button
  5. 在构建布局时,尤其是在__init__中使用Python。比试图实现那些不存在的东西或寻找用于在kv中添加小部件的正确事件更容易。它更灵活。
  6. 虽然在文档中可能会提到:之后的所有内容都像一个随意的Python,但这适用于小部件属性&amp;事件,而不是小部件本身:

    <强>坏:

    v--rule-- :  v------------ not Python -------------v
    FloatInput: if input_type == 'float' else TextInput:
    

    不可

    TextInput:
        text: 'int'
        # property:  v-------------- Python ---------------v
        input_type: 'int' if self.text == 'int' else 'float'