2016-02-14 108 views
2

請有一種方法,我可以使TextInput禁止非ASCII字符。因此,如果輸入文本到TextInput中,如果輸入了非ASCII字符,它將不會被添加到TextInput。就像使用int過濾器的方式一樣,因此TextInput中只允許使用整數。
請示例代碼非常有用。在此先感謝限制kivy的TextInput只有ASCII字符

回答

3

一個可能的解決方案是使用.decode()與字符串(例如textinput)上的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) 
+0

謝謝4 d回覆。但我仍然不清楚如何將它添加到d TextInput小部件,我仍然是新的kivy和python。你能告訴我如何。再次感謝... –

+1

嘿傢伙,我真的很想說非常感謝你的幫助。特別是@ brmbigbang。感謝他們絕對完美的例子。我需要它爲我的應用程序,現在幾乎完成...我必須說,堆棧溢出真的很搖滾。再次感謝你 –

4

的TextInput濾波在文檔中描述了即使有示例:Filter

使用正則表達式來檢查輸入的字符串是否包含想要的字符([A-Za-z0-9 ])。如果通過,則返回字符串。