将kivy的TextInput仅限制为ascii字符

时间:2016-02-14 07:55:13

标签: python kivy textinput

请问有没有办法让TextInput禁止使用非ascii字符。因此,如果在输入非ascii字符时将文本输入TextInput,则不会将其添加到TextInput。就像使用int过滤器的方式一样,因此在TextInput中只允许整数 请一个示例代码非常有用。提前致谢

2 个答案:

答案 0 :(得分:4)

文档中描述了TextInput过滤,即使是示例:Filter

使用正则表达式检查输入的字符串何时包含想要的字符([A-Za-z0-9 ])。如果它通过,则返回字符串。

答案 1 :(得分:3)

一个可能的解决方案是使用带有错误的.decode()='忽略'字符串上的标志(例如textinput)。例如:

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

将无声地替换所有可能的字符

编辑**更新了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)