标签控件你知道,但是图像标签、超链接标签、带颜色的标签你知道吗?输入框标签你知道,但是有限制的文本框你知道吗?本文,带你来深入了解,Please~~~
今天实现控件的标签和输入框的控件。
1 标签控件
1.1 文本标签(基础标签)
文本标签是最基本的标签,只需要配置文字就可以了
label1=QLabel(self)
label1.setText("文本标签")
#允许用户通过鼠标选择label1中的文本
label1.setTextInteractionFlags(Qt.TextInteractionFlag.TextSelectableByMouse)
label1.move(10,10)
1.2 样式标签
可以对标签设置样式,添加css样式。
label2=QLabel(self)
label2.setText('<font size="6" color="skyblue">控制文本颜色背景颜色</font>')
label2.setAlignment(Qt.AlignmentFlag.AlignCenter)
label2.setAutoFillBackground(True)
label2.move(10,40)
#引入绘图板
palette=QPalette()
#添加白色背景
palette.setColor(QPalette.ColorRole.Window, Qt.GlobalColor.white)
label2.setPalette(palette)
1.3 图片标签
可以直接把图片放到标签的位置,实现图片预览效果。
label3=QLabel(self)
label3.move(10,80)
label3.setToolTip('图片标签...')
label3.setPixmap(QPixmap("./images/1.jpg"))
label3.linkActivated.connect(self.clickedFunc)
1.4 超链接标签
其实和样式标签类似,只是添加了html的a标签而已。
label4=QLabel(self)
label4.move(10,280)
label4.setText("<a href='https://blog.csdn.net/weixin_38298363'>请关注美男子</a>")
label4.setAlignment(Qt.AlignmentFlag.AlignRight)
label4.linkHovered.connect(self.hoveredFunc)
2 输入框标签
输入框标签里最人性化的是能够添加校验器Validator
#定义表单布局
fLayout=QFormLayout()
#定义表单控件
leBH=QLineEdit()
leXM=QLineEdit()
leMM=QLineEdit()
leCSRQ=QLineEdit()
leGL=QLineEdit()
leJBGZ=QLineEdit()
leIP=QLineEdit()
leCH=QLineEdit()
fLayout.addRow("编号:",leBH)
fLayout.addRow("姓名:",leXM)
fLayout.addRow("登录密码:",leMM)
fLayout.addRow("出生日期:",leCSRQ)
fLayout.addRow("工龄:",leGL)
fLayout.addRow("基本工资:",leJBGZ)
fLayout.addRow("本机IP地址:",leIP)
fLayout.addRow("车号:",leCH)
接下来配置校验器和Mask效果
# 编号只能为6位
leBH.setPlaceholderText("编号为6位")
leBH.setInputMask("999999")
leMM.setPlaceholderText("密码是字母和数字组合")
leMM.setEchoMode(QLineEdit.EchoMode.Password)
#设置正则表达式进行校验密码
reg=QRegularExpression("[a-zA-Z0-9]+$")
mmValidator=QRegularExpressionValidator(self)
mmValidator.setRegularExpression(reg)
leMM.setValidator(mmValidator)
# 工龄范围为1-45
glIntValidator=QIntValidator(self)
glIntValidator.setRange(1,45)
leGL.setValidator(glIntValidator)
jbDoubleleValidator=QDoubleValidator(self)
#基本工资为浮点数
jbDoubleleValidator.setRange(0.00,9999.99)
jbDoubleleValidator.setNotation(QDoubleValidator.Notation.StandardNotation)
jbDoubleleValidator.setDecimals(2)
leJBGZ.setValidator(jbDoubleleValidator)
#出生日期目前还没有查过9999年的
leCSRQ.setInputMask("9999-00-00")
#ipv4地址
leIP.setInputMask("000.000.000.000")
#车牌通常为七位
leCH.setInputMask("XXXXXXX")