多文档界面QMdiArea

Posted liming19680104

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多文档界面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_())

 

以上是关于多文档界面QMdiArea的主要内容,如果未能解决你的问题,请参考以下文章

Python Qt GUI设计:QMdiArea和QMdiSubWindow类实现多文档界面(拓展篇—3)

Python Qt GUI设计:QMdiArea和QMdiSubWindow类实现多文档界面(拓展篇—3)

MDI QMdiArea 多文档区域

QMdiArea如何设置Tab尺寸

setsystemmenu作用

QMdiarea 变空时是不是会发生事件/信号?