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

本期思维导图:

相关推荐
小灰灰搞电子2 天前
PyQt 实现蜂巢菜单源码分享
pyqt·鱼眼凸起
znnnk2 天前
【Python】GUI 开发从入门到实战(三):PyQt/PySide 进阶之路
开发语言·python·pyqt
民乐团扒谱机7 天前
【超详细】PyQt6 实现 AU 风格波形图编辑器:多级缩放与采样点逐级渲染,附全过程代码
开发语言·python·编辑器·pyqt·audition·时域·频谱图
典典分享指南8 天前
Excel SUMIFS 跨表汇总实战:多表条件求和的完整指南
django·flask·numpy·pyqt·fastapi
狮子雨恋11 天前
【无标题】
pyqt
微小冷13 天前
pyqt+matplotlib多进程图像刷新
pyqt·matplotlib·进程通信·多进程·queue·process
千里码aicood13 天前
PyQt基于卷积神经网络的智慧校园的设计与实现
人工智能·cnn·pyqt
千里码aicood13 天前
基于PyQt心理咨询机器人智能系统的设计与实现
机器人·pyqt
典典分享指南14 天前
Windows 自动化踩坑实录
python·intellij-idea·pyqt·emacs·visual studio
深蓝海拓16 天前
基于QtPy (PySide6) 的PLC-HMI工程实战记录(五)为当前动作画面的信号连接变量
网络·笔记·python·学习·pyqt