通常情况下,我们会对用户的输入做一些限制,可以使用验证器和输入掩码来进行
常见的验证器(Validator):整型验证器、浮点型验证器及自定义验证器
常见的输入掩码:IP地址、MAC地址、日期、许可证号等
我们来分析一个综合验证器与掩码的例子:
# -*- coding: utf-8 -*-
from PyQt5.QtWidgets import QApplication, QLineEdit , QWidget , QFormLayout
from PyQt5.QtGui import QIntValidator , QDoubleValidator , QFont
from PyQt5.QtCore import Qt
import sys
class lineEditDemo(QWidget):
def __init__(self, parent=None):
super(lineEditDemo, self).__init__(parent)
e1 = QLineEdit() # 文本框e1
e1.setValidator( QIntValidator() ) # int值有效
e1.setMaxLength(4) # 最长4位
e1.setAlignment( Qt.AlignRight ) # 靠右
e1.setFont( QFont("Arial",20)) # 设置字体字号
e2 = QLineEdit() # 文本框e2
e2.setValidator( QDoubleValidator(0.99,99.99,2)) # 保留两位小数
flo = QFormLayout() # 设置表单布局
flo.addRow("integer validator", e1)
flo.addRow("Double validator",e2)
e3 = QLineEdit() # 文本框e3
e3.setInputMask('+99_9999_9999999') # 输入掩码应用于电话号码
flo.addRow("Input Mask",e3)
e4 = QLineEdit() # 文本框e4
e4.textChanged.connect( self.textchanged ) # 发射textChanged信号连接槽函数textchanged
flo.addRow("Text changed",e4)
e5 = QLineEdit() # 文本框e5
e5.setEchoMode( QLineEdit.Password ) # 设置显示模式EchoMode为Password,发射edtingfinished信号连接到槽函数enterPress()
flo.addRow("Password",e5)
e6 = QLineEdit("Hello PyQt5") # 文本框e6
e6.setReadOnly(True) # 设置只读
flo.addRow("Read Only",e6 )
e5.editingFinished.connect( self.enterPress )
self.setLayout(flo)
self.setWindowTitle("QLineEdit例子") # 设置窗口标题
def textchanged(self, text): # textchanged函数
print( "输入的内容为: "+text )
def enterPress( self ): # enterPress函数
print( "已输入值" )
if __name__ == "__main__": # 执行与退出
app = QApplication(sys.argv)
win = lineEditDemo()
win.show()
sys.exit(app.exec_())
程序运行截图:
textchanged函数:
enterPress函数: