pyQT5下QIntValidator无法限制输入范围 在实际使用中,需要对输入的数据进行一个范围的校正,比如仅允许输入0~255之间的数字。 使用了标准的QIntValidator 方法,发现还是能够输入超过255的数字 最终解决方案采用了正则表达式进行构建。 对比程序代码如下:
from PyQt5.QtCore import QRegExp
from PyQt5.QtGui import QRegExpValidator, QIntValidator
from PyQt5.QtWidgets import *
import sys
class QLineEditValidator(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle("文本限定输入")
formLayout = QFormLayout()
LineEdit1 = QLineEdit()
LineEdit2 = QLineEdit()
LineEdit1.setValidator(QIntValidator(0,255))
regExp = QRegExp('^(25[0-5]|2[0-4][0-9]|[0-1]?[0-9]?[0-9])$')
uCharValidator = QRegExpValidator(regExp)
LineEdit2.setValidator(uCharValidator)
formLayout.addRow("QIntValidator", LineEdit1)
formLayout.addRow("正则表达式", LineEdit2)
self.setLayout(formLayout)
if __name__ == '__main__':
app = QApplication(sys.argv)
main = QLineEditValidator()
main.show()
sys.exit(app.exec_())
同样输入299,结果如下:
0-255正则表达式: ^(25[0-5]|2[0-4][0-9]|[0-1]?[0-9]?[0-9])$
HEX正则表达式 [a-fA-F0-9]+$
|