PyQt5之QLineEdit控件与校验器QValidator

Qvalidator常用来设置输入框的合法性,当合法时,才能成功输入并显示到输入框。

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

以下代码是 限制IP和port的输入 以及一个限制输入浮点数 的例子:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

from PyQt5.QtCore import QRegExp

from PyQt5.QtGui import QRegExpValidator, QIntValidator, QDoubleValidator

from PyQt5.QtWidgets import *

import sys

 

class QLineEditValidator(QWidget):

    def __init__(self):

        super().__init__()

        self.initUI()

 

    def initUI(self):

        self.setWindowTitle("文本输入框的校验器")

        # 实例化表单布局

        formLayout = QFormLayout()

 

        # 创建三个文本输入框

        ipLineEdit = QLineEdit()

        portLineEdit = QLineEdit()

        doubleLineEdit = QLineEdit()

         

        # 实例化整型校验器,并设置范围0~65536

        portValidator = QIntValidator(0,65536)

        # 设置 正则表达式,显示输入0.0.0.0~255.255.255.255

        regExp = QRegExp('^((2[0-4]\d|25[0-5]|\d?\d|1\d{2})\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$')

        # 实例化自定义校验器

        ipValidator = QRegExpValidator(regExp)

        # 实例化浮点校验器,并设置范围-360~360,精度为小数点两位

        doubleValidator = QDoubleValidator(-360,360,2)

 

        # 为文本输入框设置对应的校验器

        ipLineEdit.setValidator(ipValidator)

        portLineEdit.setValidator(portValidator)

        doubleLineEdit.setValidator(doubleValidator)

 

        # 文本输入框添加到表单布局上

        formLayout.addRow("IP", ipLineEdit)

        formLayout.addRow("Port", portLineEdit)

        formLayout.addRow("Double",doubleLineEdit)

 

        self.setLayout(formLayout)

 

if __name__ == '__main__':

    app = QApplication(sys.argv)

    main = QLineEditValidator()

    main.show()

    sys.exit(app.exec_())

运行后结果:

PyQt5之QLineEdit控件与校验器QValidator_第1张图片

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