将 kivy 的 TextInput 限制为仅 ascii 字符

Restrict kivy's TextInput to only ascii characters

请问有什么方法可以使 TextInput 禁止使用非 ascii 字符。因此,当文本输入到 TextInput 时,如果键入非 ascii 字符,则不会将其添加到 TextInput。就像使用 int 过滤器的方式一样,因此 TextInput
中只允许整数 请示例代码会很有帮助。提前致谢

一个可能的解决方案是在字符串(例如文本输入)上使用 .decode() 和 errors='ignore' 标志。例如:

"food ресторан".decode("ascii", errors='ignore')

将把它能替换的所有字符默默地替换为 ascii

编辑** 根据 przyczajony 使用过滤器的建议更新示例:

class AsciiInput(TextInput):

    def insert_text(self, string, from_undo=False):
        string = string.decode("ascii", errors='ignore')
        return super(AsciiInput, self).insert_text(string, from_undo=from_undo)

文档中描述了 TextInput 过滤,甚至还有示例:Filter

使用正则表达式检查输入的字符串是否包含需要的字符 ([A-Za-z0-9 ])。如果通过,则 return 字符串。