PyQt5之QLineEdit控件與校驗器QValidator


Qvalidator常用來設置輸入框的合法性,當合法時,才能成功輸入並顯示到輸入框。

QValidator就是一個抽象類,其子類QIntValidator、QDoubleValidator分別用來設置合法int和合法Double,而還有一個子類QRegExpValidator是用來結合正則表達式,判斷合法性。

以下代碼是 限制IP和port的輸入 以及一個限制輸入浮點數 的例子:

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_())

運行后結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM