python pyqt5的多级界面

目录

主要使用模块

Ui_LoginWindow:一级界面布局

Ui_MyWindow:二级界面(主窗口)布局

Ui_ModelWindow:三级界面布局

两个控制器的设置

学习参考

完整代码

学习加强



主要使用模块

import sys
from PyQt5.QtWidgets import QApplication
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtCore import Qt, QCoreApplication
import qdarkstyle
from Ui_LoginWindow import Ui_LoginWindow
from Ui_MyWindow import Ui_MyWindow
from Ui_ModelWindow import Ui_ModelWindow


Ui_LoginWindow:一级界面布局

# 登录窗口程序
class LoginWindow(QtWidgets.QMainWindow, Ui_LoginWindow):  # 定义一级界面
    sig1_2 = QtCore.pyqtSignal()  # 跳转到二级界面的信号

    def __init__(self):
        super(LoginWindow, self).__init__()
        self.setupUi(self)
        # 跳转到每个模块的命令按钮
        self.Button1_2.clicked.connect(self.get_sig1_2)  # 一级界面的登录按钮
        self.Button1_2.clicked.connect(self.close)	 # 点击登录按钮则退出初始界面
        self.Button1_over.clicked.connect(self.close)  # 一级界面的退出按钮

    # 接收信号
    def get_sig1_2(self):
        self.sig1_2.emit()


Ui_MyWindow:二级界面(主窗口)布局

# 主窗口程序
class MyWindow(QtWidgets.QMainWindow, Ui_MyWindow):  # 定义二级界面
    sig2_3 = QtCore.pyqtSignal()  # 跳转到三级界面的信号

    def __init__(self):
        super(MyWindow, self).__init__()
        self.setupUi(self)
        # 跳转到每个模块的菜单项
        self.actionopen.triggered.connect(self.get_sig2_3)  # 二级界面的菜单项

    # 接收信号
    def get_sig2_3(self):
        self.sig2_3.emit()


Ui_ModelWindow:三级界面布局

# 三级窗口
class ModelWindow(QtWidgets.QMainWindow, Ui_ModelWindow):  # 定义三级界面
    def __init__(self):
        super(ModelWindow, self).__init__()
        self.setupUi(self)

两个控制器的设置

# 控制器:控制登录界面和主界面跳转
class ControllerOneToTwo:
    def __init__(self):
        self.Login = None
        self.control_ = None
        pass

    # 登录窗口
    def show_one(self):
        self.Login = LoginWindow()  # 一级
        # self.Login.showMaximized()
        self.Login.sig1_2.connect(self.set_sig1_2)  # 链接槽函数
        self.Login.show()

    # 登录窗口(一级)跳转到主窗口(二级)
    def set_sig1_2(self):
        self.control_ = ControllerTwoToThree()  # 更新
        self.control_.show_my_win()  # 二级
# 控制器:控制主界面和三级界面跳转
class ControllerTwoToThree:
    def __init__(self):
        self.my_win = None  # 二级
        self.md_win = None  # 三级
        pass

    # 主窗口
    def show_my_win(self):
        self.my_win = MyWindow()  # 二级
        # self.my_win.showMaximized()
        self.my_win.sig2_3.connect(self.show_md_win)  # 链接槽函数
        self.my_win.show()

    # 三级窗口
    def show_md_win(self):
        self.md_win = ModelWindow()  # 三级
        # self.md_win.showMaximized()  # 设置每个界面的默认最大化
        self.md_win.Button3_2.clicked.connect(self.md_win.close)  # 点击按钮二级转三级
        self.md_win.Button3_2.clicked.connect(self.show_my_win)
        self.my_win.close()  # 关闭原页面
        self.md_win.show()

学习参考icon-default.png?t=N7T8https://blog.csdn.net/weixin_37718724/article/details/134667197

完整代码

import sys
from PyQt5.QtWidgets import QApplication
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtCore import Qt, QCoreApplication
import qdarkstyle
from Ui_LoginWindow import Ui_LoginWindow
from Ui_MyWindow import Ui_MyWindow
from Ui_ModelWindow import Ui_ModelWindow


qdarkstyle_sheet = qdarkstyle.load_stylesheet(qt_api='pyqt5')


# 登录窗口程序
class LoginWindow(QtWidgets.QMainWindow, Ui_LoginWindow):  # 定义一级界面
    sig1_2 = QtCore.pyqtSignal()  # 跳转到二级界面的信号

    def __init__(self):
        super(LoginWindow, self).__init__()
        self.setupUi(self)
        # 跳转到每个模块的命令按钮
        self.Button1_2.clicked.connect(self.get_sig1_2)  # 一级界面的登录按钮
        self.Button1_2.clicked.connect(self.close)	 # 点击登录按钮则退出初始界面
        self.Button1_over.clicked.connect(self.close)  # 一级界面的退出按钮

    # 接收信号
    def get_sig1_2(self):
        self.sig1_2.emit()


# 主窗口程序
class MyWindow(QtWidgets.QMainWindow, Ui_MyWindow):  # 定义二级界面
    sig2_3 = QtCore.pyqtSignal()  # 跳转到三级界面的信号

    def __init__(self):
        super(MyWindow, self).__init__()
        self.setupUi(self)
        # 跳转到每个模块的菜单项
        self.actionopen.triggered.connect(self.get_sig2_3)  # 二级界面的菜单项

    # 接收信号
    def get_sig2_3(self):
        self.sig2_3.emit()


# 三级窗口
class ModelWindow(QtWidgets.QMainWindow, Ui_ModelWindow):  # 定义三级界面
    def __init__(self):
        super(ModelWindow, self).__init__()
        self.setupUi(self)


# 控制器:控制登录界面和主界面跳转
class ControllerOneToTwo:
    def __init__(self):
        self.Login = None
        self.control_ = None
        pass

    # 登录窗口
    def show_one(self):
        self.Login = LoginWindow()  # 一级
        # self.Login.showMaximized()
        self.Login.sig1_2.connect(self.set_sig1_2)  # 链接槽函数
        self.Login.show()

    # 登录窗口(一级)跳转到主窗口(二级)
    def set_sig1_2(self):
        self.control_ = ControllerTwoToThree()  # 更新
        self.control_.show_my_win()  # 二级


# 控制器:控制主界面和三级界面跳转
class ControllerTwoToThree:
    def __init__(self):
        self.my_win = None  # 二级
        self.md_win = None  # 三级
        pass

    # 主窗口
    def show_my_win(self):
        self.my_win = MyWindow()  # 二级
        # self.my_win.showMaximized()
        self.my_win.sig2_3.connect(self.show_md_win)  # 链接槽函数
        self.my_win.show()

    # 三级窗口
    def show_md_win(self):
        self.md_win = ModelWindow()  # 三级
        # self.md_win.showMaximized()  # 设置每个界面的默认最大化
        self.md_win.Button3_2.clicked.connect(self.md_win.close)  # 点击按钮二级转三级
        self.md_win.Button3_2.clicked.connect(self.show_my_win)
        self.my_win.close()  # 关闭原页面
        self.md_win.show()


if __name__ == '__main__':
    QCoreApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
    app = QApplication(sys.argv)
    app.setStyleSheet(qdarkstyle_sheet)
    control_ = ControllerOneToTwo()  # 登录界面
    control_.show_one()  # 默认展示的是登录页面
    sys.exit(app.exec_())

学习加强icon-default.png?t=N7T8https://blog.csdn.net/m0_62461630/article/details/139842352

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值