将 kivy 的 TextInput 限制为仅 ascii 字符

Posted

技术标签:

【中文标题】将 kivy 的 TextInput 限制为仅 ascii 字符【英文标题】:Restrict kivy's TextInput to only ascii characters 【发布时间】:2016-05-25 04:41:31 【问题描述】:

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

【问题讨论】:

【参考方案1】:

TextInput 过滤在文档中进行了描述,即使有示例:Filter

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

【讨论】:

【参考方案2】:

一种可能的解决方案是使用带有errors='ignore' 标志的.decode() 字符串(例如textinput)。例如:

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

将所有字符替换为 ascii 静默

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

【讨论】:

感谢 4 d 回复。但是我仍然不清楚如何将它添加到 d TextInput 小部件,我还是 kivy 和 python 的新手。你能告诉我怎么做吗?再次感谢... 大家好,我真的非常感谢你们的帮助。特别是@brmbigbang。感谢您提供的示例,它们绝对完美。我的应用程序现在几乎完成了,我需要它......而且我必须说堆栈溢出真的很摇滚。再次感谢您

以上是关于将 kivy 的 TextInput 限制为仅 ascii 字符的主要内容,如果未能解决你的问题,请参考以下文章

如何使用kivy将textinput转换为float并返回

无法在 KIVY Python 中打印取自 kivy.uix.textinput.TextInput 的文本

Kivy Textinput 未在 Windows 上检测到物理键盘

Python kivy - 如何减少 TextInput 的高度

kivy textinput 无法输入文字

如何让 kivy Window.softinput_mode = 'below_target' 将 TextInput 框移动到虚拟键盘上方?