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

发布于:2024-12-06 ⋅ 阅读:(126) ⋅ 点赞:(0)

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

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

 pyside转换前

 

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

 

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

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代码:

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

本期思维导图: 

 


网站公告

今日签到

点亮在社区的每一天
去签到