Python PyQt5实现多级界面跳转

python PTQT5 实现界面窗口两级跳转


文章目录

  • 前言
  • 一、Qtdesigner 设计各个跳转界面
  • 二、python实现界面跳转
  • 1.引入模块文件
  • 2.定义类 实现不同层级的跳转
  • 三、python实现GUI

  • 前言

    提示:这里可以添加本文要记录的大概内容:

    使用python的pyqt5和Qtdesigner 实现GUI 的设计。


    一、Qtdesigner 设计各个跳转界面

    使用Qtdesigner 完成一级界面、二级界面和三级界面的设计,并通过External Tools/pyuic将ui文件转化为.py文件,
    这里有一级界面(login.py)、二级界面 (mainview.py)和三级界面(model1_Ui.py)

    二、python实现界面跳转

    1.引入模块文件

    代码如下(示例):

    from login import Ui_MainWindow as login_Ui      #(一级界面)
    from mainview import Ui_MainWindow as main_Ui    #(二级界面)
    from model1v2 import Ui_MainWindow as model1_Ui  #(三级界面)
    # 画图时汉字的呈现
    matplotlib.use("Qt5Agg")  # 声明使用QT5
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    

    2.定义类 实现不同层级的跳转

    代码如下(示例):

    #登录窗口程序
    class LoginWindow(QtWidgets.QMainWindow, login_Ui):  #定义一级界面
        switch_window0 = QtCore.pyqtSignal()  # 跳转到二级界面的信号
        def __init__(self):
            super(LoginWindow, self).__init__()
            self.setupUi(self)
            # 跳转到每个模块的命令按钮
            self.pushButton.clicked.connect(self.gomdl0) #一级界面的登录按钮
            self.pushButton.clicked.connect(self.close)	 #点击登录按钮则退出初始界面
            self.pushButton_2.clicked.connect(self.close)#一级界面的退出按钮
        def gomdl0(self):
            self.switch_window0.emit() 
    
    #主窗口程序
    class HmainWindow(QtWidgets.QMainWindow, main_Ui): #定义二级界面
        switch_window1 = QtCore.pyqtSignal()  # 跳转到三级界面的信号
        def __init__(self):
            super(HmainWindow, self).__init__()
            self.setupUi(self)
            self.label_2=QtWidgets.QLabel()
            self.label_2.setText('版权所有: xxx')
            self.statusBar.addWidget(self.label_2) #状态栏添加版权所有等标注
            #跳转到每个模块的命令按钮
            self.mdl1Button.clicked.connect(self.gomdl1)  #二级界面的跳转按钮
        # 接收跳转到每个模块的命令按钮
        def gomdl1(self):
            self.switch_window1.emit()
    
    
    # 利用一个控制器0来控制登录界面和主界面跳转
    class Controller0:
        def __init__(self):
            pass
        #登录窗口
        def show_HMain0(self):
            self.Login=LoginWindow()
            self.Login.showMaximized()
            self.Login.switch_window0.connect(self.show_mdl0)
            self.Login.show()
        # 登录窗口(一级)跳转到主窗口(二级)
        def show_mdl0(self):
            self.mdl0 = Controller()
            self.mdl0.show_HMain()
    
    # 利用一个控制器来控制主界面和三级界面跳转
    class Controller:
        def __init__(self):
            pass
        # 主窗口
        def show_HMain(self):
            self.HMain = HmainWindow()
            self.HMain.showMaximized()
            self.HMain.switch_window1.connect(self.show_mdl1)
            self.HMain.show()
        # 跳转到mode11窗口, 注意关闭原页面
        def show_mdl1(self):
            self.mdl1 = Model1Window()
            self.mdl1.showMaximized() #设置每个界面的默认最大化
            self.mdl1.pushButton.clicked.connect(self.mdl1.close)
            self.mdl1.pushButton.clicked.connect(self.show_HMain)
            self.HMain.close()
            self.mdl1.show()
        
    if __name__ == '__main__':
        QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
        app = QtWidgets.QApplication(sys.argv)
        controller = Controller0()  # 登录界面
        controller.show_HMain0()    # 默认展示的是登录页面
        sys.exit(app.exec_())
    

    该处使用的url网络请求的数据。


    三、python实现GUI

    作者:weixin_37718724

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python PyQt5实现多级界面跳转

    发表回复