入门 PyQt6 看过来(案例)09~ 标签和输入框

 主题:实现不同标签和输入框校验功能

 

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")

3 ​完整代码

# -*- coding:utf-8 -*-
"""
------------------------------------------------
File Name: 控件汇总.py
Description:
Author: LQ
date:2024-07-26 12:52
------------------------------------------------
"""
import sys

from PyQt6.QtCore import Qt, QRegularExpression
from PyQt6.QtGui import QPalette, QPixmap, QRegularExpressionValidator, QIntValidator, QDoubleValidator
from PyQt6.QtWidgets import QApplication, QLabel, QWidget, QVBoxLayout, QFormLayout, QLineEdit


class MyWidget(QWidget):
    def __init__(self,parent=None):
        super(MyWidget,self).__init__(parent)
        self.setWindowTitle("控件测试")
        self.resize(300,650)
        ww=QWidget(self)
        vlayout_ww=QVBoxLayout(ww)

        label1=QLabel(self)
        label1.setText("文本标签")
        label1.setTextInteractionFlags(Qt.TextInteractionFlag.TextSelectableByMouse)
        label1.move(10,10)
        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)
        label3=QLabel(self)
        label3.move(10,80)
        label3.setToolTip('图片标签...')
        label3.setPixmap(QPixmap("./images/1.jpg"))
        label3.linkActivated.connect(self.clickedFunc)
        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)

        vbox = QVBoxLayout()
        vbox.addWidget(label1)
        vbox.addWidget(label2)
        vbox.addWidget(label3)
        vbox.addStretch()
        vbox.addWidget(label4)


        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)
        # 编号只能为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)

        leCSRQ.setInputMask("9999-00-00")
        leIP.setInputMask("000.000.000.000")
        leCH.setInputMask("XXXXXXX")


        vlayout_ww.addLayout(vbox)
        vlayout_ww.addLayout(fLayout)






    def clickedFunc(self):
        print("鼠标点击图片标签...")

    def hoveredFunc(self):
        print("鼠标划过超链接标签...")

if __name__=="__main__":
    app = QApplication(sys.argv)
    w = MyWidget()
    w.show()
    sys.exit(app.exec())

下一篇:还是 控件汇总


本文结束,自己创建的一个技术球球群 九71六71八2七,想一起卷的看过来!。

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路卿老师

大哥大姐给点吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值