pyqt5窗口内嵌子窗口
1.示例图:

实现功能:
1.点击打开窗体实现子窗口内嵌主窗口展示
2.通过文件控件内的open控件导入文本内容在子窗口展示
3.通过文件控件内的close实现子窗口关闭
# -*- coding: utf-8 -*-
# Created by: PyQt5 UI code generator 5.6
# WARNING! All changes made in this file will be lost!
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication,QMainWindow,QWidget,QFileDialog
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(700,550)
self.textEdit = QtWidgets.QTextEdit(Form)
self.textEdit.setGeometry(QtCore.QRect(70, 50, 491, 281))
self.textEdit.setObjectName("textEdit")
self.textEdit.setStyleSheet("background-color:#FFFFFF;color: rgb(0,0,0);font: 15pt \"AcadEref\";")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.textEdit.setText(_translate("Form", 'hello python'))
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(904, 621)
MainWindow.setStyleSheet("background-color: rgb(40, 112, 107);\n"
"color: rgb(255,255,255); \n"
"font: 15pt \"AcadEref\";\n"
)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.gridLayoutWidget = QtWidgets.QWidget(self.centralwidget)
self.gridLayoutWidget.setGeometry(QtCore.QRect(50, 10, 801, 511))
self.gridLayoutWidget.setObjectName("gridLayoutWidget")
self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setObjectName("gridLayout")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 904, 23))
self.menubar.setObjectName("menubar")
self.menu = QtWidgets.QMenu(self.menubar)
self.menu.setObjectName("menu")
self.menu_2 = QtWidgets.QMenu(self.menubar)
self.menu_2.setObjectName("menu_2")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.toolBar = QtWidgets.QToolBar(MainWindow)
self.toolBar.setObjectName("toolBar")
self.toolBar.setGeometry(QtCore.QRect(0, 20, 801, 31))
MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)
self.actionOpen = QtWidgets.QAction(MainWindow)
self.actionOpen.setObjectName("actionOpen")
self.actionSave = QtWidgets.QAction(MainWindow)
self.actionSave.setObjectName("actionSave")
self.actionNew = QtWidgets.QAction(MainWindow)
self.actionNew.setObjectName("actionNew")
self.actionClose = QtWidgets.QAction(MainWindow)
self.actionClose.setObjectName("actionClose")
self.addWinAction = QtWidgets.QAction(MainWindow)
self.addWinAction.setObjectName("addWinAction")
self.menu.addAction(self.actionOpen)
self.menu.addAction(self.actionSave)
self.menu.addAction(self.actionNew)
self.menu.addAction(self.actionClose)
self.menubar.addAction(self.menu.menuAction())
self.menubar.addAction(self.menu_2.menuAction())
self.toolBar.addAction(self.addWinAction)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.menu.setTitle(_translate("MainWindow", "文件"))
self.menu_2.setTitle(_translate("MainWindow", "编辑"))
self.toolBar.setWindowTitle(_translate("MainWindow", "toolBar"))
self.actionOpen.setText(_translate("MainWindow", "open"))
self.actionOpen.setShortcut(_translate("MainWindow", "Alt+O"))
self.actionSave.setText(_translate("MainWindow", "save"))
self.actionNew.setText(_translate("MainWindow", "new"))
self.actionClose.setText(_translate("MainWindow", "close"))
self.addWinAction.setText(_translate("MainWindow", "打开窗体"))
self.addWinAction.setToolTip(_translate("MainWindow", "addwin"))
class MainFrom(QMainWindow,Ui_MainWindow):
def __init__(self):
super(MainFrom,self).__init__()
self.setupUi(self)
self.child = ChildrenReom()
self.actionOpen.triggered.connect(self.openMsg)
self.addWinAction.triggered.connect(self.childShow)
self.actionClose.triggered.connect(self.child_clearshow)
def openMsg(self):
try:
file,ok =QFileDialog.getOpenFileName(self,"打开",'./')
with open(file,'r') as f:
file_text=f.read()
self.child.textEdit.setText(file_text)
print('filepath',file)
except Exception as e:
print('请选择文档',e)
def childShow(self):
self.gridLayout.addWidget(self.child)
self.child.show()
def child_clearshow(self):
self.child.close()
class ChildrenReom(QMainWindow, Ui_Form):
def __init__(self):
super(ChildrenReom, self).__init__()
self.setupUi(self)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
mywindow = MainFrom()
mywindow.show()
sys.exit(app.exec_())
