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_())
運行后結果: