0

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

我的问题是:

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

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

    all(char in acceptableChars for char in string)

    这样的东西有效率吗?以及如何干净地指定所有字母数字或数字?或者也许有任何现成的类或功能?

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

4

2 回答 2

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)
于 2013-11-04T00:46:44.320 回答
1

Validate()默认只有在对话框即将关闭时才调用,但你也可以在控件失去焦点时自己调用。最后,如果您的控件根本不接受某些字符,您还可以拦截wxEVT_CHAR事件以防止它们被输入。我相信 wxPython 演示展示了如何做到这一点。

于 2013-11-04T01:16:58.803 回答