PyQt信号槽实现页面的登录与跳转 #页面进一步优化

将登录框中的取消按钮使用信号和槽的机制,关闭界面。

将登录按钮使用信号和槽连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是否为"123456",如果账号密码匹配成功,当前界面关闭,另一个界面展开。如果匹配失败,则输出登录失败,并将密码框和账号框中的内容清空

pyside转换前

Pyside将ui转换为py文件,将项目资源导入后

代码如下:(主执行代码)

python 复制代码
import sys
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QWidget,QApplication

from login_sea import Ui_Form
from login_succes import Ui_Form2


#界面1(按钮)
class MyWidget(Ui_Form,QWidget):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.pushButton.clicked.connect(btn_def)


#界面2
class SecMyWidget(Ui_Form2,QWidget):
    def __init__(self):
        super().__init__()
        self.setupUi(self)



def btn_def():
    name = myWidget.lineEdit_1.text()
    password = myWidget.lineEdit_2.text()
    if name=='admin'and password=='123456':
        myWidget.close()
        second.show()
    else:
        print('输入错误')

if __name__ =='__main__':
    app = QApplication(sys.argv)

    myWidget=MyWidget()

    myWidget.setWindowFlag(Qt.WindowType.FramelessWindowHint)
    myWidget.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground)

    myWidget.show()

    second=SecMyWidget()
    second.setWindowFlag(Qt.WindowType.FramelessWindowHint)
    second.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground)
    #阻塞
    sys.exit(app.exec())

剩下两个页面的ui转py代码:

python 复制代码
# -*- coding: utf-8 -*-

################################################################################
## Form generated from reading UI file 'login_sea.ui'
##
## Created by: Qt User Interface Compiler version 6.8.1
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################

from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
    QMetaObject, QObject, QPoint, QRect,
    QSize, QTime, QUrl, Qt)
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
    QFont, QFontDatabase, QGradient, QIcon,
    QImage, QKeySequence, QLinearGradient, QPainter,
    QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QFrame, QLabel, QLineEdit,
    QPushButton, QSizePolicy, QWidget)
import res_rc
import sys

class Ui_Form(object):
    def setupUi(self, Form):
        if not Form.objectName():
            Form.setObjectName(u"Form")
        Form.resize(698, 623)
        Form.setStyleSheet(u"*{\n"
"	background-color: rgb(255, 255, 255);\n"
"}\n"
"\n"
"QFrame#frameback{		\n"
"	border-image: url(:/Logo/shangHai.jpg);\n"
"	border-radius:5px\n"
"}\n"
"\n"
"\n"
"QLabel#labelback{\n"
"	background-color: rgba(120, 120, 125, 50);\n"
"	border-radius:5px;\n"
"}\n"
"#labelback2{\n"
"	background-color: rgba(70, 70, 75, 120);\n"
"	border-radius:5px;\n"
"}\n"
"#loginlab{\n"
"	background:transparent;\n"
"	\n"
"	color: rgba(255, 255, 255, 200);\n"
"	font: 26pt \"Segoe Print\";\n"
"}\n"
"QLineEdit{\n"
"	background:transparent;\n"
"	border:none;\n"
"	border-bottom:3px solid rgba(255, 255, 255, 200);\n"
"	color: rgba(255, 255, 255, 200);\n"
"	font: 26pt \"Segoe Print\";\n"
"}\n"
"QPushButton{\n"
"	color: rgba(5, 2, 5, 200);\n"
"	font: 26pt \"Segoe Print\";\n"
"	border-radius:5px;\n"
"	background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(244, 191, 0, 255), stop:1 rgba(255, 255, 255, 255));\n"
"}\n"
"QPushButton:hover{\n"
"	color: rgba(5, 2, 5, 200);\n"
"	font: 26pt \"Segoe Print\";\n"
"	b"
                        "order-radius:5px;\n"
"	background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(190, 191, 0, 255), stop:1 rgba(190, 255, 255, 255));\n"
"}\n"
"QPushButton:pressed{\n"
"	color: rgba(5, 2, 5, 200);\n"
"	font: 26pt \"Segoe Print\";\n"
"	border-radius:5px;\n"
"	background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(244, 191, 0, 255), stop:1 rgba(255, 255, 255, 255));\n"
"	padding-top:5px;\n"
"	padding-left:5px;\n"
"}\n"
"\n"
"\n"
"\n"
"")
        self.frameback = QFrame(Form)
        self.frameback.setObjectName(u"frameback")
        self.frameback.setGeometry(QRect(90, 100, 531, 401))
        self.frameback.setFrameShape(QFrame.StyledPanel)
        self.frameback.setFrameShadow(QFrame.Raised)
        self.labelback = QLabel(self.frameback)
        self.labelback.setObjectName(u"labelback")
        self.labelback.setGeometry(QRect(0, 0, 531, 401))
        self.labelback2 = QLabel(self.frameback)
        self.labelback2.setObjectName(u"labelback2")
        self.labelback2.setGeometry(QRect(50, 80, 431, 281))
        self.loginlab = QLabel(self.frameback)
        self.loginlab.setObjectName(u"loginlab")
        self.loginlab.setGeometry(QRect(190, 100, 211, 71))
        self.lineEdit_1 = QLineEdit(self.frameback)
        self.lineEdit_1.setObjectName(u"lineEdit_1")
        self.lineEdit_1.setGeometry(QRect(150, 190, 231, 31))
        self.lineEdit_1.setMaxLength(32769)
        self.lineEdit_2 = QLineEdit(self.frameback)
        self.lineEdit_2.setObjectName(u"lineEdit_2")
        self.lineEdit_2.setGeometry(QRect(150, 240, 231, 31))
        self.lineEdit_2.setEchoMode(QLineEdit.Password)
        self.pushButton = QPushButton(self.frameback)
        self.pushButton.setObjectName(u"pushButton")
        self.pushButton.setGeometry(QRect(150, 300, 241, 41))

        self.retranslateUi(Form)

        QMetaObject.connectSlotsByName(Form)
    # setupUi

    def retranslateUi(self, Form):
        Form.setWindowTitle(QCoreApplication.translate("Form", u"Form", None))
        self.labelback.setText("")
        self.labelback2.setText("")
        self.loginlab.setText(QCoreApplication.translate("Form", u"welcome", None))
        self.lineEdit_1.setPlaceholderText(QCoreApplication.translate("Form", u"e-mail", None))
        self.lineEdit_2.setPlaceholderText(QCoreApplication.translate("Form", u"passwd", None))
        self.pushButton.setText(QCoreApplication.translate("Form", u"log in", None))
    # retranslateUi

if __name__ == '__main__':
    #实例化程序,有且仅有一个应用程序对象
    app = QApplication(sys.argv)

    w=QWidget()

    Ui_Form().setupUi(w)
    w.setWindowFlag(Qt.WindowType.FramelessWindowHint)
    w.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground)

    w.show()
    #阻塞
    sys.exit(app.exec())










# -*- coding: utf-8 -*-

################################################################################
## Form generated from reading UI file 'login_succes.ui'
##
## Created by: Qt User Interface Compiler version 6.8.1
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################

from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
    QMetaObject, QObject, QPoint, QRect,
    QSize, QTime, QUrl, Qt)
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
    QFont, QFontDatabase, QGradient, QIcon,
    QImage, QKeySequence, QLinearGradient, QPainter,
    QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QLabel, QSizePolicy, QWidget)
import res_rc
import sys

class Ui_Form2(object):
    def setupUi(self, Form):
        if not Form.objectName():
            Form.setObjectName(u"Form")
        Form.resize(709, 695)
        Form.setStyleSheet(u"QLabel#label1{\n"
"	border-radius:3px;\n"
"	border-image: url(:/Logo/wanXia.jpg);\n"
"}\n"
"#label2{\n"
"	\n"
"	font: 48pt \"\u5fae\u8f6f\u96c5\u9ed1\";\n"
"	\n"
"	color: rgb(85, 0, 255);\n"
"}")
        self.label1 = QLabel(Form)
        self.label1.setObjectName(u"label1")
        self.label1.setGeometry(QRect(70, 100, 551, 431))
        self.label2 = QLabel(Form)
        self.label2.setObjectName(u"label2")
        self.label2.setGeometry(QRect(100, 230, 341, 71))

        self.retranslateUi(Form)

        QMetaObject.connectSlotsByName(Form)
    # setupUi

    def retranslateUi(self, Form):
        Form.setWindowTitle(QCoreApplication.translate("Form", u"Form", None))
        self.label1.setText("")
        self.label2.setText(QCoreApplication.translate("Form", u"\u767b\u9646\u6210\u529f\uff01", None))
    # retranslateUi

if __name__ == '__main__':
    #实例化程序,有且仅有一个应用程序对象
    app = QApplication(sys.argv)

    w=QWidget()

    Ui_Form2().setupUi(w)
    w.setWindowFlag(Qt.WindowType.FramelessWindowHint)
    w.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground)

    w.show()
    #阻塞
    sys.exit(app.exec())

本期思维导图:

相关推荐
深蓝海拓3 天前
PySide6从0开始学习的笔记(二十二) 几种封装信号传递内容的方法
笔记·python·qt·学习·pyqt
赤鸢QAQ3 天前
PySide6批量创建控件
python·qt·pyqt
深蓝海拓5 天前
PySide6之QListWidget 学习
笔记·python·qt·学习·pyqt
大学生毕业题目7 天前
毕业项目推荐:91-基于yolov8/yolov5/yolo11的井盖破损检测识别(Python+卷积神经网络)
python·yolo·目标检测·cnn·pyqt·井盖破损
大学生毕业题目7 天前
毕业项目推荐:92-基于yolov8/yolov5/yolo11的棉花病虫害检测识别系统(Python+卷积神经网络)
python·yolo·目标检测·cnn·pyqt·棉花病虫害
深蓝海拓7 天前
PySide6从0开始学习的笔记(二十一) 使用loadUi直接加载.ui文件
笔记·python·qt·学习·ui·pyqt
深蓝海拓9 天前
PySide6从0开始学习的笔记(二十) qdarkstyle的深入应用
笔记·python·qt·学习·pyqt
我可以将你更新哟9 天前
【PyQT-2】布局管理
pyqt
懷淰メ10 天前
python3GUI--基于深度学习的人脸识别管理系统(详细图文介绍)
人工智能·深度学习·人脸识别·pyqt·人脸·识别系统·人脸管理
我可以将你更新哟10 天前
【PyQT-4】QListWidget列表控件、QComboBox下拉列表控件、QTableWidget表格控件
开发语言·python·pyqt