kivy:TextInput的insert_text()函数可以用kv语言覆盖吗?

Kivy: Can the insert_text() function of TextInput be overrided in kv language?

有没有办法只用kv语言覆盖TextInputinsert_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 中设置它。