02-PyQt5窗口控件、标签控件及单行文本控件:打造极致用户体验

2.1 常用窗口控件的使用

Qt Designer中,有三类常用的窗口控件:在Qt Designer中,可以根据需求通过选择新建Main Window、Widget和Dialog 来创建新窗口,同时也分别对应了PyQt5中的QMainWindow、QWidget和QDialog三个类。QmainWindow是一个为用户提供主窗口程序的类,主窗口通常包括菜单栏、工具栏、状态栏以及其他窗口组件,是应用程序的主要界面;Qwidget是所有窗口类的父类,可以内嵌到其它窗口的内部,也可以作为独立的窗口显示。Qdialog是Qwidget的子类,因此具有其所有功能,用于创建对话框窗口、与用户进行交互,如接受用户输入、显示消息、选择文件等。当需要创建一个独立的、自定义的用户界面小部件,而不是整个应用程序窗口时,通常使用Qwidget。QmainWindow通常用于创建完整的应用程序主窗口,它包含了一些常见的顶层窗口功能。

在这里插入图片描述
在这里插入图片描述

2.2 Qlabel标签控件

QLabel控件,标签控件,作为提示标记,通常用于在用户界面中显示静态文本或图像(可以将图像设置为标签的背景或图标属性),但不具备用户输入交互功能。
在这里插入图片描述
在这里插入图片描述

2.3 文本框类控件-单行文本控件QLineEdit

QLineEdit是比较常用的单行文本输入控件,它提供了一个可编辑的文本框,允许用户可以在其中输入和编辑单行文本。通常与QLabel标签控件配合使用。QLineEdit通常用于文件路径选择、命令行输入、URL输入框、搜索框、文本过滤器等,其常见的方法、属性、信号如下表所示。
在这里插入图片描述

import sys

import qdarkstyle
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import QRegularExpression
from PyQt5.QtGui import QIntValidator, QDoubleValidator, QRegularExpressionValidator
from PyQt5.QtWidgets import QMainWindow, QLineEdit, QApplication


class Ui_MainWindow(QMainWindow):

    def __init__(self):
        super(Ui_MainWindow,self).__init__()
        self.setupUi(self)

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(500, 500)
        MainWindow.setMinimumSize(QtCore.QSize(500, 500))
        MainWindow.setMaximumSize(QtCore.QSize(500, 500))
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap("C:/Users/yanjiaxi/Pictures/微信截图_20220215133715.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        MainWindow.setWindowIcon(icon)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
        self.verticalLayout.setObjectName("verticalLayout")
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setObjectName("gridLayout")
        self.lineEdit_date = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_date.setMaximumSize(QtCore.QSize(330, 330))
        self.lineEdit_date.setObjectName("lineEdit_date")
        
        self.lineEdit_date.setInputMask("0000-00-00")

        self.gridLayout.addWidget(self.lineEdit_date, 10, 1, 1, 1)
        self.lineEdit_IntValidator = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_IntValidator.setMaximumSize(QtCore.QSize(330, 330))
        self.lineEdit_IntValidator.setObjectName("lineEdit_IntValidator")
        
        validator_int = QIntValidator(self)
        validator_int.setRange(0, 1000) #设置范围
        self.lineEdit_IntValidator.setValidator(validator_int)



        self.gridLayout.addWidget(self.lineEdit_IntValidator, 4, 1, 1, 1)
        self.label_PasswordEchoOnEdit = QtWidgets.QLabel(self.centralwidget)
        self.label_PasswordEchoOnEdit.setMinimumSize(QtCore.QSize(200, 0))
        self.label_PasswordEchoOnEdit.setMaximumSize(QtCore.QSize(200, 16777215))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.label_PasswordEchoOnEdit.setFont(font)
        self.label_PasswordEchoOnEdit.setObjectName("label_PasswordEchoOnEdit")
        self.gridLayout.addWidget(self.label_PasswordEchoOnEdit, 3, 0, 1, 1)
        self.lineEdit_QDoubleValidator = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_QDoubleValidator.setMaximumSize(QtCore.QSize(330, 330))
        self.lineEdit_QDoubleValidator.setObjectName("lineEdit_QDoubleValidator")
        validator_double = QDoubleValidator(self)
        validator_double.setRange(-100, 100)
        validator_double.setNotation(QDoubleValidator.Notation.StandardNotation)
        validator_double.setDecimals(2)
        self.lineEdit_QDoubleValidator.setValidator(validator_double)


        self.gridLayout.addWidget(self.lineEdit_QDoubleValidator, 5, 1, 1, 1)
        self.lineEdit_Password = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_Password.setMaximumSize(QtCore.QSize(330, 330))
        self.lineEdit_Password.setObjectName("lineEdit_Password")
        self.lineEdit_Password.setEchoMode(QLineEdit.EchoMode.Password)
        self.lineEdit_Password.setStyleSheet('lineedit-password-character: 42')

        self.gridLayout.addWidget(self.lineEdit_Password, 2, 1, 1, 1)
        self.lineEdit_ip = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_ip.setMaximumSize(QtCore.QSize(330, 330))
        self.lineEdit_ip.setObjectName("lineEdit_ip")
        self.lineEdit_ip.setInputMask("000.000.000.000;_")

        self.gridLayout.addWidget(self.lineEdit_ip, 8, 1, 1, 1)
        self.label_mac = QtWidgets.QLabel(self.centralwidget)
        self.label_mac.setMinimumSize(QtCore.QSize(200, 0))
        self.label_mac.setMaximumSize(QtCore.QSize(200, 16777215))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.label_mac.setFont(font)
        self.label_mac.setObjectName("label_mac")
        self.gridLayout.addWidget(self.label_mac, 9, 0, 1, 1)
        self.lineEdit_other = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_other.setMaximumSize(QtCore.QSize(330, 330))
        self.lineEdit_other.setObjectName("lineEdit_other")
        self.lineEdit_other.setInputMask(">AAAA-AAAA-AAAA-AAAA-AAAA-AAAA;#")

        self.gridLayout.addWidget(self.lineEdit_other, 11, 1, 1, 1)
        self.lineEdit_QRegularExpression = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_QRegularExpression.setMaximumSize(QtCore.QSize(330, 330))
        self.lineEdit_QRegularExpression.setObjectName("lineEdit_QRegularExpression")
        regexp = QRegularExpression("[a-zA-z0-9]+")  # 创建正则表达式匹配项
        validator_regx = QRegularExpressionValidator(self)  # 创建校验器
        validator_regx.setRegularExpression(regexp)  # 设置校验器正则表达式
        self.lineEdit_QRegularExpression.setValidator(validator_regx)  # 设置校验器

        self.gridLayout.addWidget(self.lineEdit_QRegularExpression, 6, 1, 1, 1)
        self.label_NoEcho = QtWidgets.QLabel(self.centralwidget)
        self.label_NoEcho.setMinimumSize(QtCore.QSize(200, 0))
        self.label_NoEcho.setMaximumSize(QtCore.QSize(200, 16777215))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.label_NoEcho.setFont(font)
        self.label_NoEcho.setObjectName("label_NoEcho")
        self.gridLayout.addWidget(self.label_NoEcho, 1, 0, 1, 1)
        self.lineEdit_phone = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_phone.setMaximumSize(QtCore.QSize(330, 330))
        self.lineEdit_phone.setObjectName("lineEdit_phone")
        self.lineEdit_phone.setInputMask("999 9999 9999;0")


        self.gridLayout.addWidget(self.lineEdit_phone, 7, 1, 1, 1)
        self.label_IntValidator = QtWidgets.QLabel(self.centralwidget)
        self.label_IntValidator.setMinimumSize(QtCore.QSize(200, 0))
        self.label_IntValidator.setMaximumSize(QtCore.QSize(200, 16777215))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.label_IntValidator.setFont(font)
        self.label_IntValidator.setObjectName("label_IntValidator")
        self.gridLayout.addWidget(self.label_IntValidator, 4, 0, 1, 1)
        self.label_phone = QtWidgets.QLabel(self.centralwidget)
        self.label_phone.setMinimumSize(QtCore.QSize(200, 0))
        self.label_phone.setMaximumSize(QtCore.QSize(200, 16777215))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.label_phone.setFont(font)
        self.label_phone.setObjectName("label_phone")
        self.gridLayout.addWidget(self.label_phone, 7, 0, 1, 1)
        self.lineEdit_mac = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_mac.setMaximumSize(QtCore.QSize(330, 330))
        self.lineEdit_mac.setObjectName("lineEdit_mac")
        self.lineEdit_mac.setInputMask("HH:HH:HH:HH:HH:HH;")

        self.gridLayout.addWidget(self.lineEdit_mac, 9, 1, 1, 1)
        self.label_Password = QtWidgets.QLabel(self.centralwidget)
        self.label_Password.setMinimumSize(QtCore.QSize(200, 0))
        self.label_Password.setMaximumSize(QtCore.QSize(200, 16777215))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.label_Password.setFont(font)
        self.label_Password.setObjectName("label_Password")
        self.gridLayout.addWidget(self.label_Password, 2, 0, 1, 1)
        self.label_ip = QtWidgets.QLabel(self.centralwidget)
        self.label_ip.setMinimumSize(QtCore.QSize(200, 0))
        self.label_ip.setMaximumSize(QtCore.QSize(200, 16777215))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.label_ip.setFont(font)
        self.label_ip.setObjectName("label_ip")
        self.gridLayout.addWidget(self.label_ip, 8, 0, 1, 1)
        self.label_QDoubleValidator = QtWidgets.QLabel(self.centralwidget)
        self.label_QDoubleValidator.setMinimumSize(QtCore.QSize(200, 0))
        self.label_QDoubleValidator.setMaximumSize(QtCore.QSize(200, 16777215))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.label_QDoubleValidator.setFont(font)
        self.label_QDoubleValidator.setObjectName("label_QDoubleValidator")
        self.gridLayout.addWidget(self.label_QDoubleValidator, 5, 0, 1, 1)
        self.label_Normal = QtWidgets.QLabel(self.centralwidget)
        self.label_Normal.setMinimumSize(QtCore.QSize(200, 0))
        self.label_Normal.setMaximumSize(QtCore.QSize(200, 16777215))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.label_Normal.setFont(font)
        self.label_Normal.setObjectName("label_Normal")
        self.gridLayout.addWidget(self.label_Normal, 0, 0, 1, 1)
        self.lineEdit_NoEcho = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_NoEcho.setMaximumSize(QtCore.QSize(330, 330))
        self.lineEdit_NoEcho.setObjectName("lineEdit_NoEcho")
        self.lineEdit_NoEcho.setEchoMode(QLineEdit.EchoMode.NoEcho)

        self.gridLayout.addWidget(self.lineEdit_NoEcho, 1, 1, 1, 1)
        self.label_date = QtWidgets.QLabel(self.centralwidget)
        self.label_date.setMinimumSize(QtCore.QSize(200, 0))
        self.label_date.setMaximumSize(QtCore.QSize(200, 16777215))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.label_date.setFont(font)
        self.label_date.setObjectName("label_date")
        self.gridLayout.addWidget(self.label_date, 10, 0, 1, 1)
        self.lineEdit_Normal = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_Normal.setMaximumSize(QtCore.QSize(330, 330))
        self.lineEdit_Normal.setObjectName("lineEdit_Normal")

        self.gridLayout.addWidget(self.lineEdit_Normal, 0, 1, 1, 1)
        self.label_other = QtWidgets.QLabel(self.centralwidget)
        self.label_other.setMinimumSize(QtCore.QSize(200, 0))
        self.label_other.setMaximumSize(QtCore.QSize(200, 16777215))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.label_other.setFont(font)
        self.label_other.setObjectName("label_other")
        self.gridLayout.addWidget(self.label_other, 11, 0, 1, 1)
        self.label_QRegularExpression = QtWidgets.QLabel(self.centralwidget)
        self.label_QRegularExpression.setMinimumSize(QtCore.QSize(200, 0))
        self.label_QRegularExpression.setMaximumSize(QtCore.QSize(200, 16777215))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.label_QRegularExpression.setFont(font)
        self.label_QRegularExpression.setObjectName("label_QRegularExpression")
        self.gridLayout.addWidget(self.label_QRegularExpression, 6, 0, 1, 1)
        self.lineEdit_PasswordEchoOnEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_PasswordEchoOnEdit.setMaximumSize(QtCore.QSize(330, 330))
        self.lineEdit_PasswordEchoOnEdit.setObjectName("lineEdit_PasswordEchoOnEdit")
        self.lineEdit_PasswordEchoOnEdit.setEchoMode(QLineEdit.EchoMode.PasswordEchoOnEdit)

        self.gridLayout.addWidget(self.lineEdit_PasswordEchoOnEdit, 3, 1, 1, 1)
        self.verticalLayout.addLayout(self.gridLayout)
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "QLineEdit"))
        self.label_PasswordEchoOnEdit.setText(_translate("MainWindow", "PasswordEchoOnEdit"))
        self.label_mac.setText(_translate("MainWindow", "MAC地址"))
        self.label_NoEcho.setText(_translate("MainWindow", "NoEcho"))
        self.label_IntValidator.setText(_translate("MainWindow", "IntValidator"))
        self.label_phone.setText(_translate("MainWindow", "电话号码"))
        self.label_Password.setText(_translate("MainWindow", "Password"))
        self.label_ip.setText(_translate("MainWindow", "IP地址"))
        self.label_QDoubleValidator.setText(_translate("MainWindow", "QDoubleValidator"))
        self.label_Normal.setText(_translate("MainWindow", "Normal"))
        self.label_date.setText(_translate("MainWindow", "日期"))
        self.label_other.setText(_translate("MainWindow", "其它"))
        self.label_QRegularExpression.setText(_translate("MainWindow", "QRegularExpression"))

if __name__ == "__main__":
    app = QApplication(sys.argv)
    form = Ui_MainWindow()
    form.setStyleSheet(qdarkstyle.load_stylesheet_pyqt5())
    form.show()
    sys.exit(app.exec_())

在这里插入图片描述

总结

本小节,我们通过小案例帮大家认识和实践pyqt5中最基础的控件,单行文本输入控件、窗体控件、及标签控件。下期,我们继续,由入门到精通再到一步步实现一个机器学习GUI。

跟多往期内容:PyQt5从入门到实践系列-19-玩转GUI中的数据库-01

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值