多文档界面QMdiArea

当使用多文档界面功能时,我们是将QMdiArea作为主窗口的中央部件,然后在这个中央部件中,我们可以同时打开很多个子窗口QMdiSubWindow

样式:

 

 1 import sys
 2 from PyQt5.QtGui import QIcon
 3 from PyQt5.QtWidgets import QApplication, QMainWindow, QMdiArea, QMdiSubWindow, QAction, QTextEdit
 4 
 5 
 6 class Demo(QMainWindow):#继承QMainWindow
 7     def __init__(self):
 8         super(Demo, self).__init__()
 9         self.mdi_area = QMdiArea(self)  # 实例化一个多文档窗口
10         self.setCentralWidget(self.mdi_area)  #把多文档窗口设置为主窗口的中央控件
11 
12         self.toolbar = self.addToolBar('Tool Bar')
13 
14         self.new_action = QAction('新建', self)
15         self.close_action = QAction('关闭', self)
16         self.close_all_action = QAction('全关闭', self)
17         self.mode1_action = QAction('层叠', self)
18         self.mode2_action = QAction('平铺', self)
19 
20         self.new_action.triggered.connect(self.new_func)
21         self.close_action.triggered.connect(self.mdi_area.closeActiveSubWindow)
22         #self.mdi_area.closeActiveSubWindow   关闭当前激活的窗口
23 
24         self.close_all_action.triggered.connect(self.mdi_area.closeAllSubWindows)
25         #self.mdi_area.closeAllSubWindows    关闭所有子窗口
26 
27         self.mode1_action.triggered.connect(self.mdi_area.cascadeSubWindows)
28         #self.mdi_area.cascadeSubWindows   层叠布局子窗口
29 
30         self.mode2_action.triggered.connect(self.mdi_area.tileSubWindows)
31         #self.mdi_area.tileSubWindows   平铺布局子窗口
32 
33         self.toolbar.addAction(self.new_action)
34         self.toolbar.addAction(self.close_action)
35         self.toolbar.addAction(self.close_all_action)
36         self.toolbar.addAction(self.mode1_action)
37         self.toolbar.addAction(self.mode2_action)
38 
39     def new_func(self):
40         text = QTextEdit()
41         sub = QMdiSubWindow()  #实例化一个子窗口
42         sub.setWidget(text)   #设置子窗口的控件
43         self.mdi_area.addSubWindow(sub)  #在多文档窗口中添加子窗口
44         sub.show()  #显示子窗口
45 
46 
47 if __name__ == '__main__':
48     app = QApplication(sys.argv)
49     demo = Demo()
50     demo.show()
51     sys.exit(app.exec_())

 

posted @ 2019-02-18 12:00  天子骄龙  阅读(709)  评论(0编辑  收藏  举报