【Python_PySide2学习笔记(十九)】单行文本框QLineEdit类设置输入校验器Validator
单行文本框QLineEdit类设置输入校验器Validator
前言
此篇文章中介绍如何对单行文本框 QLineEdit 类设置输入校验器 Validator ,有需要的读者可以点赞收藏,也欢迎在评论区进行讨论。
正文
1、单行文本框 QLineEdit 类简介
QLineEdit 类:是一个单行文本编辑器,允许用户输入和编辑单行纯文本;自带一组编辑功能:撤销、重做、剪切、粘贴、拖放
2、校验器 QValidator 类介绍
QValidator 类:通过设置输入校验器可以限制单行文本框输入的数据;设置校验器之后,只有在输入数据验证通过后才会触发 returnPressed 和 editingFinished 信号。
QValidator 类的几个子类:
2.1、 QIntValidator:限制整型数据
2.2、QDoubleValidator:限制浮点型数据
2.3、QRegExpValidator:限制正则表达式限制字符串
2.4、QRegularExpressionValidator:限制正则表达式限制字符串
其中 QRegExpValidator 和 QRegularExpressionValidator 的用法基本一致
3、校验器 QValidator 类的使用步骤
3.1、创建单行文本框
# 创建单行文本框
intEdit = QLineEdit()
doubleEdit = QLineEdit()
regEdit = QLineEdit()
3.2、创建校验器并设置输入的范围
-
创建整型校验器并设置范围:
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]")) # 直接创建正则表达式校验器并绑定正则表达式
3.3、将校验器和输入框绑定
使用 QLineEdit 对象 的 setValidator() 方法
# 将校验器和输入框绑定
self.intEdit.setValidator(intVal)
self.doubleEdit.setValidator(doubleVal)
self.regEdit.setValidator(regVal)
3.4、运行效果
4、校验器 QValidator 类的注意事项
在使用过程中发现 QLineEdit 自带的 setValidator 中的限制整型 QIntValidator 和 限制浮点型 QDoubleValidator 的范围时无法正确应用。
例如:当设置整型限制器的范围为0~100,intVal = QIntValidator(0,100)
,而实际可以输入的值为0~1000,通过搜索网上资料发现,这是 pyqt 目前存在的一个 bug,网上提供的思路:1、通过使用正则表达式限制器来完成对文本框输入字符的限制 2、继承QIntValidator 、QDoubleValidator 的基类重写。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!