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

