结构框架
- 设计两个ui界面
- 为两个ui生成的py文件 去分别定义两个逻辑层去分别继承前面的两个类
- 初始化逻辑层
- 设置信号与槽
- 定义槽
文件说明
- 一共六个文件
MW1.ui 界面1 ui设计
MW1.py 界面1 ui转py文件
MW2.ui 界面2ui文件
MW2.py 界面2 ui转py文件
First_window_action.py 逻辑层1 继承界面1的py类
MW2_Action.py 逻辑层2 继承界面2的py类
MW1.py
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'MW1.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(460, 294)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.widget = QtWidgets.QWidget(self.centralwidget)
self.widget.setGeometry(QtCore.QRect(20, 20, 411, 221))
self.widget.setStyleSheet("background-color: rgb(255, 255, 127);")
self.widget.setObjectName("widget")
self.label = QtWidgets.QLabel(self.widget)
self.label.setGeometry(QtCore.QRect(150, 10, 101, 41))
self.label.setObjectName("label")
self.TurnTo1_Button = QtWidgets.QPushButton(self.widget)
self.TurnTo1_Button.setGeometry(QtCore.QRect(70, 170, 75, 23))
self.TurnTo1_Button.setStyleSheet("background-color: rgb(170, 170, 255);")
self.TurnTo1_Button.setObjectName("TurnTo1_Button")
self.TurnTo2_Button = QtWidgets.QPushButton(self.widget)
self.TurnTo2_Button.setGeometry(QtCore.QRect(260, 170, 75, 23))
self.TurnTo2_Button.setStyleSheet("background-color: rgb(170, 170, 255);")
self.TurnTo2_Button.setObjectName("TurnTo2_Button")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 460, 23))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
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", "MainWindow"))
self.label.setText(_translate("MainWindow", "这是界面1"))
self.TurnTo1_Button.setText(_translate("MainWindow", "界面1"))
self.TurnTo2_Button.setText(_translate("MainWindow", "界面2"))
展示界面1内容
MW2.py
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 303)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.frame = QtWidgets.QFrame(self.centralwidget)
self.frame.setGeometry(QtCore.QRect(20, 10, 761, 251))
self.frame.setStyleSheet("background-color: rgb(170, 255, 255);")
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.label = QtWidgets.QLabel(self.frame)
self.label.setGeometry(QtCore.QRect(330, 0, 101, 41))
self.label.setObjectName("label")
self.TurnTo1_Button2 = QtWidgets.QPushButton(self.frame)
self.TurnTo1_Button2.setGeometry(QtCore.QRect(200, 190, 75, 23))
self.TurnTo1_Button2.setStyleSheet("background-color: rgb(170, 170, 255);")
self.TurnTo1_Button2.setObjectName("TurnTo1_Button2")
self.TurnTo2_Button2 = QtWidgets.QPushButton(self.frame)
self.TurnTo2_Button2.setGeometry(QtCore.QRect(390, 190, 75, 23))
self.TurnTo2_Button2.setStyleSheet("background-color: rgb(170, 170, 255);")
self.TurnTo2_Button2.setObjectName("TurnTo2_Button2")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
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", "MainWindow"))
self.label.setText(_translate("MainWindow", "这是界面2"))
self.TurnTo1_Button2.setText(_translate("MainWindow", "界面1"))
self.TurnTo2_Button2.setText(_translate("MainWindow", "界面2"))
First_window_action.py
import sys
import MW1
import MW2_Action
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QFileDialog, QMessageBox
from PyQt5 import QtWidgets
# 注意这里定义的第一个界面的后端代码类需要继承两个类
class FirstWindowActions(MW1.Ui_MainWindow, QMainWindow):
def __init__(self):
super(MW1.Ui_MainWindow, self).__init__()
# 创建界面
self.setupUi(self)
# 绑定槽函数`
self.TurnTo2_Button.clicked.connect(self.open_btn_clicked)
self.TurnTo2_Button.clicked.connect(self.close)
# 核心代码
# 定义一个按钮的槽函数
def open_btn_clicked(self):
"""点击相应按钮,跳转到第二个界面"""
# 实例化第二个界面的后端类,并对第二个界面进行显示
# 通过派生新类去访问类
self.another_window = MW2_Action.AnotherWindowActions()
self.another_window.show()
# 主程序入口
if __name__ == '__main__':
# 这里是界面的入口,在这里需要定义QApplication对象,之后界面跳转时不用再重新定义,只需要调用show()函数即可
app = QApplication(sys.argv)
# 实例化
demo_window = FirstWindowActions()
# 显示
demo_window.show()
sys.exit(app.exec_())
MW2_Action.py
import sys
import MW1
import MW2_Action
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QFileDialog, QMessageBox
from PyQt5 import QtWidgets
# 注意这里定义的第一个界面的后端代码类需要继承两个类
class FirstWindowActions(MW1.Ui_MainWindow, QMainWindow):
def __init__(self):
super(MW1.Ui_MainWindow, self).__init__()
# 创建界面
self.setupUi(self)
# 绑定槽函数`
self.TurnTo2_Button.clicked.connect(self.open_btn_clicked)
self.TurnTo2_Button.clicked.connect(self.close)
# 核心代码
# 定义一个按钮的槽函数
def open_btn_clicked(self):
"""点击相应按钮,跳转到第二个界面"""
# 实例化第二个界面的后端类,并对第二个界面进行显示
# 通过派生新类去访问类
self.another_window = MW2_Action.AnotherWindowActions()
self.another_window.show()
# 主程序入口
if __name__ == '__main__':
# 这里是界面的入口,在这里需要定义QApplication对象,之后界面跳转时不用再重新定义,只需要调用show()函数即可
app = QApplication(sys.argv)
# 实例化
demo_window = FirstWindowActions()
# 显示
demo_window.show()
sys.exit(app.exec_())