文章目录
- 步骤一
- 步骤2
- 步骤3
- 步骤4
- 步骤5
- 完整的代码如下
步骤一
1.首先新建一个窗口,把对象名改为ParentWindow,然后保存,把.ui的名字改为Main_window.ui
步骤2
再新建一个窗口,把对象名改为ChildWindow1,然后保存,把.ui的名字改为child_window_1.ui
步骤3
再新建一个窗口,把对象名改为ChildWindow2,然后保存,把.ui的名字改为child_window_2.ui
步骤4
然后,分别用PyUIC将这三个.ui文件转化为.py文件,
步骤5
首先,打开这三个py文件,全部在开头导入QMainWindow的类,然后,继承这个类,如下图所示
然后在Main_window.ui这个文件里定义一个方法用于打开子窗口1和2
def open_child_window(self):
from child_window_1 import Ui_ChildWindow1
from child_window_2 import Ui_ChildWindow2
self.child1 = Ui_ChildWindow1()
self.child2 = Ui_ChildWindow2()
self.child1.show()
self.child2.show()
定义一个按钮且通过.connect()方法来关联按钮与子窗口之间的关系
self.button = QPushButton(self.centralwidget)
self.button.setText("打开子窗口")
self.button.clicked.connect(self.open_child_window)
最后再给这个程序一个主程序用于运行显示,即
if __name__ == "__main__":
# 导入 sys 模块,用于处理命令行参数和退出应用程序
import sys
# 创建一个 QApplication 实例,这是 PyQt 应用程序的主对象
app = QtWidgets.QApplication(sys.argv)
# 创建一个 QMainWindow 实例,这是应用程序的主窗口
MainWindow = QtWidgets.QMainWindow()
# 创建一个 Ui_MainWindow 实例,这是用于设计主窗口界面的类
ui = Ui_ParentWindow()
# 调用 Ui_MainWindow 类中的 setupUi() 方法,将主窗口设置为设计的界面
ui.setupUi(MainWindow)
# 显示主窗口
MainWindow.show()
# 进入主循环,等待事件的发生,直到应用程序被关闭
sys.exit(app.exec_())
运行就可以得到如下结果
完整的代码如下
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QPushButton, QMainWindow
class Ui_ParentWindow(QMainWindow):
def setupUi(self, ParentWindow):
ParentWindow.setObjectName("ParentWindow")
ParentWindow.resize(374, 301)
self.centralwidget = QtWidgets.QWidget(ParentWindow)
self.centralwidget.setObjectName("centralwidget")
ParentWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(ParentWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 374, 23))
self.menubar.setObjectName("menubar")
ParentWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(ParentWindow)
self.statusbar.setObjectName("statusbar")
ParentWindow.setStatusBar(self.statusbar)
self.retranslateUi(ParentWindow)
QtCore.QMetaObject.connectSlotsByName(ParentWindow)
self.button = QPushButton(self.centralwidget)
self.button.setText("打开子窗口")
self.button.clicked.connect(self.open_child_window)
def retranslateUi(self, ParentWindow):
_translate = QtCore.QCoreApplication.translate
ParentWindow.setWindowTitle(_translate("ParentWindow", "MainWindow"))
def open_child_window(self):
from child_window_1 import Ui_ChildWindow1
from child_window_2 import Ui_ChildWindow2
self.child1 = Ui_ChildWindow1()
self.child2 = Ui_ChildWindow2()
self.child1.show()
self.child2.show()
if __name__ == "__main__":
# 导入 sys 模块,用于处理命令行参数和退出应用程序
import sys
# 创建一个 QApplication 实例,这是 PyQt 应用程序的主对象
app = QtWidgets.QApplication(sys.argv)
# 创建一个 QMainWindow 实例,这是应用程序的主窗口
MainWindow = QtWidgets.QMainWindow()
# 创建一个 Ui_MainWindow 实例,这是用于设计主窗口界面的类
ui = Ui_ParentWindow()
# 调用 Ui_MainWindow 类中的 setupUi() 方法,将主窗口设置为设计的界面
ui.setupUi(MainWindow)
# 显示主窗口
MainWindow.show()
# 进入主循环,等待事件的发生,直到应用程序被关闭
sys.exit(app.exec_())