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()
# 方法一:使用QIntValidator
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]+$