将 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 字符串。
请问有什么方法可以使 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 字符串。