此篇文章中介绍如何对单行文本框 QLineEdit 类设置输入校验器 Validator ,有需要的读者可以点赞收藏,也欢迎在评论区进行讨论。
QLineEdit 类:是一个单行文本编辑器,允许用户输入和编辑单行纯文本;自带一组编辑功能:撤销、重做、剪切、粘贴、拖放
QValidator 类:通过设置输入校验器可以限制单行文本框输入的数据;设置校验器之后,只有在输入数据验证通过后才会触发 returnPressed 和 editingFinished 信号。
QValidator 类的几个子类:
其中 QRegExpValidator 和 QRegularExpressionValidator 的用法基本一致
# 创建单行文本框
intEdit = QLineEdit()
doubleEdit = QLineEdit()
regEdit = QLineEdit()
创建整型校验器并设置范围:
intVal = QIntValidator(0,100) # 在创建整型校验器的同时设置范围
或
intVal = QIntValidator() # 先创建整型校验器
intVal.setRange(0, 100) # 再设置范围
创建浮点型校验器并设置范围:
doubleVal = QDoubleValidator(0,100) # 在创建浮点型校验器的同时设置范围
或
doubleVal = QDoubleValidator() # 先创建浮点型校验器
doubleVal.setRange(0, 100) # 再设置范围
浮点型校验器的其他设置:
doubleVal.setNotation(QDoubleValidator.StandardNotation) # 标准显示
doubleVal.setNotation(QDoubleValidator.ScientificNotation) # 科学显示
doubleVal.setDecimals(2) # 设置浮点数精度
创建正则表达式检验器:
a. 创建正则表达式:reg = QRegExp("[AaBbCc][0]") # 只允许输入A0 B0 C0 a0 b0 c0
b. 创建正则表达式校验器:regVal = QRegExpValidator() # 创建正则表达式校验器
c. 正则表达式校验器绑定正则表达式:regVal.setRegExp(reg) # 正则表达式校验器绑定正则表达式
或
regVal=QRegExpValidator(QRegExp("[AaBbCc][0]")) # 直接创建正则表达式校验器并绑定正则表达式
使用 QLineEdit 对象 的 setValidator() 方法
# 将校验器和输入框绑定
self.intEdit.setValidator(intVal)
self.doubleEdit.setValidator(doubleVal)
self.regEdit.setValidator(regVal)
在使用过程中发现 QLineEdit 自带的 setValidator 中的限制整型 QIntValidator 和 限制浮点型 QDoubleValidator 的范围时无法正确应用。
例如:当设置整型限制器的范围为0~100,intVal = QIntValidator(0,100)
,而实际可以输入的值为0~1000,通过搜索网上资料发现,这是 pyqt 目前存在的一个 bug,网上提供的思路:1、通过使用正则表达式限制器来完成对文本框输入字符的限制 2、继承QIntValidator 、QDoubleValidator 的基类重写。