zl程序教程

您现在的位置是:首页 >  其他

当前栏目

【pyqt5学习】——QLineEdit控件输入校验器Validator、掩码setInputMask限制输入、textChanged信号

输入学习 控件 限制 信号 校验 PyQT5 validator
2023-09-11 14:21:45 时间

目录

1、输入校验器——限制输入框输入的内容

1)校验器类型——整数、浮点数、数字字母结合(正则)

2)步骤

3)结果

​编辑

 ​编辑

4)完整代码

 2、利用掩码进行输入的限制

0)掩码对照表

1)掩码解释

2)掩码Python实现

3)结果 

4)完整代码

 5)在Qt_designer中设置掩码

3、QLineEdit信号textChanged()


1、输入校验器——限制输入框输入的内容

1)校验器类型——整数、浮点数、数字字母结合(正则)

from PyQt5.QtGui import QIntValidator,QDoubleValidator,QRegExpValidator

QIntValidator——整数

QDoubleValidator——浮点数类型

QRegExpValidator——数字和字母组合类型

2)步骤

①创建输入框

②创建校验器,并且设置输入的范围等

		# 校验器设置
		## 整数
		intVal = QIntValidator()
		intVal.setRange(1,99)
		## 浮点数
		doubleVal = QDoubleValidator()
		doubleVal.setRange(-360,360)
		doubleVal.setNotation(QDoubleValidator.StandardNotation) # 标准显示
		doubleVal.setDecimals(2) # 设置浮点数精度
		## 利用正则设置字母和数字结合
		reg = QRegExp("[a-zA-Z0-9]+$")
		regVal = QRegExpValidator()
		regVal.setRegExp(reg)

③将校验器与校验器结合在一起 

		# 将校验器和输入框绑定
		intLineEdit.setValidator(intVal)
		doubleLineEdit.setValidator(doubleVal)
		regLineEdit.setValidator(regVal)

3)结果

 

4)完整代码

# -*- coding: utf-8 -*-
# @Time    : 2022/5/20 16:44
# @Author  : @linlianqin
# @Site    : 
# @File    : QLineEdit_learn.py
# @Software: PyCharm
# @description:


from PyQt5.QtWidgets import QDialog,QLabel,QLineEdit,QPushButton,QFormLayout,QApplication,QWidget
from PyQt5.QtGui import QIntValidator,QDoubleValidator,QRegExpValidator
from PyQt5.QtCore import QRegExp

# 校验器学习
class QLineEditValLearn(QWidget):
	def __init__(self):
		super(QLineEditValLearn, self).__init__()
		self.InitUI()

	# 初始化界面
	def InitUI(self):
		self.setWindowTitle("QLineEdit校验器学习")

		# 创建多个输入框
		intLineEdit = QLineEdit()
		doubleLineEdit = QLineEdit()
		regLineEdit = QLineEdit()

		# 创建一个form布局
		formLayout = QFormLayout()
		# 将控件放入布局中
		formLayout.addRow("整数",intLineEdit)
		formLayout.addRow("浮点数",doubleLineEdit)
		formLayout.addRow("字母数字组合",regLineEdit)

		# 在输入框中显示灰色字体,用于提示
		intLineEdit.setPlaceholderText("整数")
		doubleLineEdit.setPlaceholderText("浮点数")
		regLineEdit.setPlaceholderText("字母数字组合")

		# 校验器设置
		## 整数
		intVal = QIntValidator()
		intVal.setRange(1,99)
		## 浮点数
		doubleVal = QDoubleValidator()
		doubleVal.setRange(-360,360)
		doubleVal.setNotation(QDoubleValidator.StandardNotation) # 标准显示
		doubleVal.setDecimals(2) # 设置浮点数精度
		## 利用正则设置字母和数字结合
		reg = QRegExp("[a-zA-Z0-9]+$")
		regVal = QRegExpValidator()
		regVal.setRegExp(reg)

		# 将校验器和输入框绑定
		intLineEdit.setValidator(intVal)
		doubleLineEdit.setValidator(doubleVal)
		regLineEdit.setValidator(regVal)

		# 将布局放入到里面
		self.setLayout(formLayout)

if __name__ == '__main__':
	import sys
	app = QApplication(sys.argv)
	demoWin = QLineEditValLearn()
	demoWin.show()
	sys.exit(app.exec_())

 2、利用掩码进行输入的限制

0)掩码对照表

 

1)掩码解释

日期掩码、Mac地址掩码、许可证掩码、ip地址掩码等,根据自己的需求进行设置

2)掩码Python实现

分号前的是预设的掩码,分号后是在不输入的情况下的默认显示的字符(掩码)

		# 设置掩码——掩码其实就是根据常见的模式设置好了显示的内容格式和长度
		ipLineEdit.setInputMask("000.000.000.000;_")
		macLineEdit.setInputMask("HH:HH:HH:HH:HH:HH;_")
		dateLineEdit.setInputMask("0000-00-00;*")
		licenseLineEdit.setInputMask(">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#")

3)结果 

未输入前 

 输入部分后

 可以看到,输入了的地方就变成了输入内容,其余未输入的地方就还是默认格式(掩码),若删除输入的内容,显示的还是默认字符(掩码)

4)完整代码

# 掩码限制输入
class QLineEditMaskLearn(QWidget):
	def __init__(self):
		super(QLineEditMaskLearn, self).__init__()
		self.InitUI()

	# 初始化界面
	def InitUI(self):
		self.setWindowTitle("QLineEdit校验器学习")

		# 创建多个输入框
		ipLineEdit = QLineEdit()
		macLineEdit = QLineEdit()
		dateLineEdit = QLineEdit()
		licenseLineEdit = QLineEdit()

		# 设置掩码——掩码其实就是根据常见的模式设置好了显示的内容格式和长度
		ipLineEdit.setInputMask("000.000.000.000;_")
		macLineEdit.setInputMask("HH:HH:HH:HH:HH:HH;_")
		dateLineEdit.setInputMask("0000-00-00;*")
		licenseLineEdit.setInputMask(">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#")

		# 创建一个form布局
		formLayout = QFormLayout()
		# 将控件放入布局中
		formLayout.addRow("数字掩码",ipLineEdit)
		formLayout.addRow("mac掩码",macLineEdit)
		formLayout.addRow("日期掩码",dateLineEdit)
		formLayout.addRow("许可证掩码",licenseLineEdit)

		# 将布局放入到里面
		self.setLayout(formLayout)




if __name__ == '__main__':
	import sys
	app = QApplication(sys.argv)
	demoWin = QLineEditMaskLearn()
	demoWin.show()
	sys.exit(app.exec_())

 5)在Qt_designer中设置掩码

3、QLineEdit信号textChanged()

textChanged()——当输入框中的文本内容发生改变时,会触发绑定的槽函数事件

输入框名称.textChanged.connect(槽函数)