import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
class demoQMultipleDoc(QMainWindow):
count = 0
def __init__(self):
super(demoQMultipleDoc, self).__init__()
self.setWindowTitle("0507QMultipleDoc")
#创建菜单栏
bar = self.menuBar()
file = bar.addMenu("File")
file.addAction("New")
file.addAction("Cascade")
file.addAction("Tiled")
closeSub = QAction("Close SubWindow", self)
# +号两边不能有空格
closeSub.setShortcut("Ctrl+C")
file.addAction(closeSub)
file.triggered[QAction].connect(self.windowAction)
#新建一个主窗口并设置为中央控件
self.mdi = QMdiArea()
self.setCentralWidget(self.mdi)
def windowAction(self, q):
print(q.text() + " triggered")
if q.text() == "New":
demoQMultipleDoc.count += 1
#新建子窗口
subWin = QMdiSubWindow()
#设定窗口内使用的控件
subWin.setWidget(QTextEdit())
subWin.setWindowTitle("subWindow" + str(demoQMultipleDoc.count))
#将子窗口加入到主窗口并显示
self.mdi.addSubWindow(subWin)
subWin.show()
if q.text() == "Cascade":
self.mdi.cascadeSubWindows()
if q.text() == "Tiled":
self.mdi.tileSubWindows()
if q.text() == "Close SubWindow":
if demoQMultipleDoc.count > 0:
demoQMultipleDoc.count -= 1
self.mdi.closeActiveSubWindow()
if __name__ == '__main__':
app = QApplication(sys.argv)
win = demoQMultipleDoc()
win.show()
sys.exit(app.exec_())