kivy:TextInput的insert_text()函数可以用kv语言覆盖吗?
Kivy: Can the insert_text() function of TextInput be overrided in kv language?
有没有办法只用kv语言覆盖TextInput
的insert_text()
功能?我只想将文本限制为数值。我知道有一种方法可以通过 python 代码来完成,例如我发现的以下示例:
class NumericInput(TextInput):
def insert_text(self, substring, from_undo=False):
if not from_undo:
try:
int(substring)
except ValueError:
return
super(NumericInput, self).insert_text(substring, from_undo)
但是有没有办法对 kv 文件中的 TextInput 小部件执行相同的操作:
<Temperature>:
name: "Temperature"
BoxLayout:
orientation: 'vertical'
Label:
text: "Farenheit"
TextInput:
id: user_input
font_size: 50
size_hint_y: None
insert_text:
如果不是,我如何集成 python 代码以限制我的 TextInput
小部件的输入文本?
您不能覆盖 kv 语言的方法。如果您想这样做,只需在 python 定义中覆盖 Temperature
小部件的方法即可。
TextInput 还有一个 input_filter
属性 可以设置为 'int'
或 'float'
以仅接受数字。您可以在 kv 中设置它。
有没有办法只用kv语言覆盖TextInput
的insert_text()
功能?我只想将文本限制为数值。我知道有一种方法可以通过 python 代码来完成,例如我发现的以下示例:
class NumericInput(TextInput):
def insert_text(self, substring, from_undo=False):
if not from_undo:
try:
int(substring)
except ValueError:
return
super(NumericInput, self).insert_text(substring, from_undo)
但是有没有办法对 kv 文件中的 TextInput 小部件执行相同的操作:
<Temperature>:
name: "Temperature"
BoxLayout:
orientation: 'vertical'
Label:
text: "Farenheit"
TextInput:
id: user_input
font_size: 50
size_hint_y: None
insert_text:
如果不是,我如何集成 python 代码以限制我的 TextInput
小部件的输入文本?
您不能覆盖 kv 语言的方法。如果您想这样做,只需在 python 定义中覆盖 Temperature
小部件的方法即可。
TextInput 还有一个 input_filter
属性 可以设置为 'int'
或 'float'
以仅接受数字。您可以在 kv 中设置它。