我试图在我的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; }
}
答案 0 :(得分:0)
单独使用kv
lang是不可能的。至少不是直接的。你有4个选择:
根据小部件的属性设置input_type
:
TextInput:
hint_text: 'int'
input_type: 'int' if self.hint_text == 'int' else 'float'
从外部更改input.input_type
属性(如果差异仅为输入类型)
<parent>.add_widget(Factory.FloatInput())
,请说on_release
Button
__init__
中使用Python。比试图实现那些不存在的东西或寻找用于在kv
中添加小部件的正确事件更容易。它更灵活。虽然在文档中可能会提到:
之后的所有内容都像一个随意的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'