验证wxPython中的数据

时间:2013-11-03 22:42:42

标签: python wxpython wxwidgets

我正在尝试为表单上的输入创建Validators。我已经了解到,在wxPython中,由于缺乏对标准wxTextValidator等的支持,因此必须继承wx.Validator。

我的问题是:

  • 如何有效地检查该字符串是否符合简单规则(请勿使用正则表达式)

    acceptableChars = ['a', 'b', ...]

    all(char in acceptableChars for char in string)

    有效吗?以及如何干净地指定所有字母数字或数字?或者是否有任何现成的课程或功能?

  • 将覆盖Validate方法仅在输入数据时保留约束 - 我的意思是它会阻止用户将数字输入到字母数字TextCtrl中还是仅在关闭模态诊断时检查?< / p>

2 个答案:

答案 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演示了如何做到这一点。