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]+$

本文介绍了在PyQT5环境下,使用QIntValidator限制QLineEdit输入值在0~255之间无效的问题,并提供了一个通过正则表达式实现输入验证的解决方案。示例代码中展示了两种方法,一种是使用QIntValidator,另一种是使用QRegExpValidator,后者成功阻止了超出范围的输入。
5497





