我正在尝试为表单上的输入创建Validators。我已经了解到,在wxPython中,由于缺乏对标准wxTextValidator等的支持,因此必须继承wx.Validator。
我的问题是:
如何有效地检查该字符串是否符合简单规则(请勿使用正则表达式)
acceptableChars = ['a', 'b', ...]
all(char in acceptableChars for char in string)
有效吗?以及如何干净地指定所有字母数字或数字?或者是否有任何现成的课程或功能?
将覆盖Validate
方法仅在输入数据时保留约束 - 我的意思是它会阻止用户将数字输入到字母数字TextCtrl
中还是仅在关闭模态诊断时检查?< / p>
答案 0 :(得分:1)
"12345".isdigit() # True
"123.45".isdigit() # False
"abcde".isalpha() # True
"abcde1".isalpha() # False
"abcde12345".isalnum() # True
"!!??".isalnum() # False
对于其他情况,您必须使用代码
acceptableChars = "ab5-?" # or acceptableChars = ['a', 'b', '5', '-', '?']
all(char in acceptableChars for char in string)
def isValid(string, acceptableChars):
return all(char in acceptableChars for char in string)
答案 1 :(得分:1)
Validate()
,但是当控件失去焦点时,您也可以自己调用它。最后,如果您的控件根本不接受某些字符,您还可以截取wxEVT_CHAR
个事件以防止它们被输入。我确实相信wxPython演示了如何做到这一点。