Python PyQt5实现多级界面跳转
python PTQT5 实现界面窗口两级跳转
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
使用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