pyqt5学习笔记——QValidator类简介

QValidator简介

官网文档内容1:

The QValidator class provides validation of input text.

The class itself is abstract. Two subclasses, QIntValidator and QDoubleValidator, provide basic numeric-range checking, and QRegExpValidator provides general checking using a custom regular expression.

一大顿都是英文,其实说简单点,Qvalidator常用来设置输入框的合法性,当合法时,才能成功输入并显示到输入框。

QValidator就是一个抽象类,其子类QIntValidator、QDoubleValidator两个类是用来设置合法int和合法Double,而还有一个子类QRegExpValidator是用来结合正则表达式,判断合法性。

文档内容2:

enum QValidator::State

This enum type defines the states in which a validated string can exist.

Constant Value Description
QValidator::Invalid 0 The string is clearly invalid.
QValidator::Intermediate 1 The string is a plausible intermediate value.
QValidator::Acceptable 2 The string is acceptable as a final result; i.e. it is valid.

 

QValidator里面有一个枚举类型,state,包含Invalid、Intermediate、Acceptable,分别表示不合法、半合法、合法三种类型,其中半合法表示当前类型不合法,但是有可能在继续的输入后,成为合法的数据,比如你检测的合法序列是10-99,而现在用户输入了一个4,则返回Intermediate,因为用户可能继续输入一个5,变成了45,即为合法序列了。

使用案例

1.设置端口号(0-65535)

使用QIntValidator,可以设置合法的整数范围,如:

port_edit.setValidator(QIntValidator(0,65535))

其中port_edit是一个LineEdit的对象,调用setValidator可以为它设置合法器。

2.设置IP地址(利用正则表达式)

在我上一篇海康摄像头设置窗口中,也是利用该方法,但上一篇内容比较复杂,为了演示,在网上找到一篇比较好的示例:

PyQt4学习--QLineEdit加入正则判断IP

3.手动检测字符串str是否满足合法器

利用QValidator.validate(str)函数,可以判断字符串str是否满足合法器,返回一个状态元组:

port = '8080'
port_validator = QIntValidator(0,65535)
port_validator.validate(port,0)#第二个参数我还没弄懂什么意思,不过默认用0就行,否则会报错

#输出:(2, '8080', 0)

可以看出,输出元组的第一个元素,其实就是QValidator的State枚举类型,2表示合法,我们可以用它来判断是否通过合法器

port_validator.validate(port,0)[0] == QValidator.Acceptable
#输出: True

 

你可能感兴趣的:(python,pyqt5)