添加菜單欄的組件, 通過點擊菜單欄的組件按鈕來生成新的窗口, 然后對新的窗口進行重疊或者擴張的操作
MultiWindows.py
""" 容納多文檔的窗口 QMdiArea QMdiSubWindow """ import sys, math from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * class MultiWindows(QMainWindow): count = 0 def __init__(self): super(MultiWindows, self).__init__() self.setWindowTitle("容納多文檔的窗口") #容納多文檔窗口 self.mdi = QMdiArea() self.setCentralWidget(self.mdi) bar = self.menuBar() file = bar.addMenu("File") file.addAction("New") file.addAction("cascade") file.addAction("Tiled") file.triggered.connect(self.windowaction) def windowaction(self, q): print(q) if q.text() == "New": MultiWindows.count += 1 #設置單個的子窗口 sub = QMdiSubWindow() #在子窗口上添加一個文本編輯框 sub.setWidget(QTextEdit()) sub.setWindowTitle("子窗口" + str(MultiWindows.count)) #將子窗口添加到多個窗口控件上 self.mdi.addSubWindow(sub) sub.show() elif q.text() == "cascade": #設置窗口的縮放方式為重疊 self.mdi.cascadeSubWindows() elif q.text() == 'Tiled': #設置窗口的縮放方式為展開 self.mdi.tileSubWindows() if __name__ == "__main__": app = QApplication(sys.argv) main = MultiWindows() main.show() sys.exit(app.exec_())