【pyqt5学习】——登录界面跳转到主界面,登录界面关闭的情况下从主界面跳转回登录界面

目录

一、登录界面长下面这样,由qt designer设计 login.py

二、登录界面 逻辑代码loginLogic.py

三、主界面comsumeType.py

 四、主界面逻辑代码comsumeTypeLogic.py

五、登录界面跳转至主界面

六、主界面回到登录界面


一、登录界面长下面这样,由qt designer设计 login.py

 

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

# Form implementation generated from reading ui file 'login.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(416, 271)
        MainWindow.setMinimumSize(QtCore.QSize(416, 271))
        MainWindow.setMaximumSize(QtCore.QSize(416, 271))
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(70, 40, 291, 31))
        font = QtGui.QFont()
        font.setPointSize(17)
        font.setBold(True)
        font.setWeight(75)
        self.label.setFont(font)
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(80, 110, 101, 21))
        font = QtGui.QFont()
        font.setPointSize(11)
        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(80, 150, 61, 21))
        font = QtGui.QFont()
        font.setPointSize(11)
        self.label_3.setFont(font)
        self.label_3.setObjectName("label_3")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(160, 110, 171, 20))
        self.lineEdit.setObjectName("lineEdit")
        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_2.setGeometry(QtCore.QRect(160, 150, 171, 20))
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(100, 200, 81, 31))
        font = QtGui.QFont()
        font.setPointSize(11)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(240, 200, 81, 31))
        font = QtGui.QFont()
        font.setPointSize(11)
        self.pushButton_2.setFont(font)
        self.pushButton_2.setObjectName("pushButton_2")
        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", "欢迎"))
        self.label.setText(_translate("MainWindow", "管理系统"))
        self.label_2.setText(_translate("MainWindow", "用户名:"))
        self.label_3.setText(_translate("MainWindow", "密  码:"))
        self.pushButton.setText(_translate("MainWindow", "登录"))
        self.pushButton_2.setText(_translate("MainWindow", "注册"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

二、登录界面 逻辑代码loginLogic.py

from login import Ui_MainWindow as loginUI
from comsumeTypeLogic import comsumeTypeLogic as CSTLogic

from PyQt5.QtWidgets import QMessageBox,QMainWindow,QApplication
from PyQt5.QtGui import QIcon
from PyQt5 import QtCore

import sys

class loginLogic(QMainWindow,loginUI):
	def __init__(self):
		super(loginLogic, self).__init__()
		self.setupUi(self)
		self.setWindowIcon(QIcon("datas/icon.ico"))
		self.CSTLogic = CSTLogic()

		self.run()

	# 按钮绑定事件
	def run(self):
		# 登录
		self.pushButton.clicked.connect(self.login_)
		# 注册
		self.pushButton_2.clicked.connect(self.register_)

	# 登录事件
	def login_(self):
        pass

	# 注册事件
	def register_(self):
        pass

	# 重新启动界面
	def reshow(self):
		self.show()

# 运行界面循环
def main_():
	app = QApplication(sys.argv)
	login_ = loginLogic()
	login_.show()
	sys.exit(app.exec_())

if __name__ == '__main__':
	main_()

三、主界面comsumeType.py

 四、主界面逻辑代码comsumeTypeLogic.py

from comsumeType import Ui_MainWindow as CSTUI

from PyQt5.QtWidgets import QMessageBox,QMainWindow,QApplication
from PyQt5.QtGui import QIcon
from PyQt5 import QtCore

import sys

class comsumeTypeLogic(QMainWindow,CSTUI):
	returnLoginSignal = QtCore.pyqtSignal()
	def __init__(self):
		super(comsumeTypeLogic, self).__init__()
		self.setupUi(self)
		self.setWindowIcon(QIcon("datas/icon.ico"))

		self.run()

	# 按钮绑定事件
	def run(self):
		# 退出系统
		self.pushButton_10.clicked.connect(self.exitSystem)
		# 返回登录界面
		self.pushButton_11.clicked.connect(self.returnLogin)


	# 退出系统
	def exitSystem(self):
		sys.exit()

	# 返回登录界面
	def returnLogin(self):
		self.close()
		self.returnLoginSignal.emit()

if __name__ == '__main__':
	app =QApplication(sys.argv)
	CSTLogic = comsumeTypeLogic()
	CSTLogic.show()
	sys.exit(app.exec_())

五、登录界面跳转至主界面

1、在登录界面逻辑代码loginLogic.py中将主界面的逻辑代码实例化

self.CSTLogic = CSTLogic()

2、登录界面逻辑代码loginLogic.py中需要跳转的位置插入以下代码

跳转到主界面同时关闭登录界面

			self.CSTLogic.show()
			# 登录界面关闭
			self.close()

六、主界面回到登录界面

1、在主界面逻辑代码comsumeTypeLogic.py中,添加信号

returnLoginSignal = QtCore.pyqtSignal()

2、在主界面逻辑代码comsumeTypeLogic.py中需要跳转到登录界面的地方触发信号并发射

	# 返回登录界面
	def returnLogin(self):
		self.close()
		self.returnLoginSignal.emit()

3、在登录界面逻辑代码loginLogic.py中实例化主界面逻辑代码,且将信号绑定槽函数

self.CSTLogic.show()
self.CSTLogic.returnLoginSignal.connect(self.reshow)

4、在登录界面逻辑代码loginLogic.py中编写槽函数代码

	def reshow(self):
		self.show()

  • 15
    点赞
  • 137
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
您可以使用QStackedWidget来实现登录界面界面之间的跳转。具体步骤如下: 1. 在Qt Designer中创建两个窗口,一个是登录界面,一个是界面。 2. 在登录界面中添加一个按钮,当用户点击该按钮时,跳转界面。 3. 在界面中添加一个按钮,当用户点击该按钮时,返登录界面。 4. 在函数中初始化两个窗口,并使用QStackedWidget将它们添加到堆栈中。 5. 在登录界面中的按钮槽函数中,使用堆栈的setCurrentIndex()函数将堆栈切换到界面。 6. 在界面中的按钮槽函数中,使用堆栈的setCurrentIndex()函数将堆栈切换登录界面。 以下是一个简单的示例代码: ``` python from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QStackedWidget class LoginWidget(QWidget): def __init__(self): super().__init__() self.login_button = QPushButton("Login") self.login_button.clicked.connect(self.switch_to_main) layout = QVBoxLayout() layout.addWidget(self.login_button) self.setLayout(layout) def switch_to_main(self): stacked_widget.setCurrentIndex(1) class MainWidget(QWidget): def __init__(self): super().__init__() self.back_button = QPushButton("Back") self.back_button.clicked.connect(self.switch_to_login) layout = QVBoxLayout() layout.addWidget(self.back_button) self.setLayout(layout) def switch_to_login(self): stacked_widget.setCurrentIndex(0) if __name__ == '__main__': app = QApplication([]) stacked_widget = QStackedWidget() login_widget = LoginWidget() main_widget = MainWidget() stacked_widget.addWidget(login_widget) stacked_widget.addWidget(main_widget) stacked_widget.show() app.exec_() ``` 在这个示例中,我们创建了两个QWidget窗口:LoginWidget和MainWidget。在LoginWidget中,我们添加了一个QPushButton,当用户点击该按钮时,切换到MainWidget。在MainWidget中,我们添加了一个QPushButton,当用户点击该按钮时,切换LoginWidget。我们使用QVBoxLayout将按钮添加到QWidget中。 在函数中,我们创建了一个QStackedWidget,并将LoginWidget和MainWidget添加到堆栈中。我们使用setCurrentIndex()函数初始化堆栈并显示它。当用户点击按钮时,我们使用setCurrentIndex()函数切换窗口。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

有情怀的机械男

你的鼓励将是我最大的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值