【Python_PySide2学习笔记(十九)】单行文本框QLineEdit类设置输入校验器Validator

2023-12-28 16:57:05

前言

此篇文章中介绍如何对单行文本框 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、创建校验器并设置输入的范围

  1. 创建整型校验器并设置范围:

    		intVal = QIntValidator(0,100)  # 在创建整型校验器的同时设置范围
    

            intVal = QIntValidator() # 先创建整型校验器
            intVal.setRange(0, 100) # 再设置范围
    
  2. 创建浮点型校验器并设置范围:

    		doubleVal = QDoubleValidator(0,100) # 在创建浮点型校验器的同时设置范围
    

    		doubleVal = QDoubleValidator() # 先创建浮点型校验器
            doubleVal.setRange(0, 100) # 再设置范围
    

    浮点型校验器的其他设置:

    	    doubleVal.setNotation(QDoubleValidator.StandardNotation)  # 标准显示
    	    doubleVal.setNotation(QDoubleValidator.ScientificNotation)  # 科学显示
            doubleVal.setDecimals(2)  # 设置浮点数精度
    
  3. 创建正则表达式检验器:
    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 的基类重写。

文章来源:https://blog.csdn.net/sallyyellow/article/details/135264372
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。