停靠窗口QDockWidget

停靠窗口QDockWidget要和QMainWindow一起搭配使用的

样式:

 1 import sys
 2 from PyQt5.QtCore import Qt
 3 from PyQt5.QtWidgets import QApplication, QMainWindow, QDockWidget, QTextEdit
 4 
 5 
 6 class Demo(QMainWindow):#必须继承QMainWindow
 7     def __init__(self):
 8         super(Demo, self).__init__()
 9 
10         self.dock1 = QDockWidget('Dock Window 1', self)#实例化一个停靠窗口【虚拟窗口】。参数1:停靠窗口的标题
11         self.dock2 = QDockWidget('Dock Window 2', self)
12         self.dock3 = QDockWidget('Dock Window 3', self)
13 
14 
15         self.dock1.setAllowedAreas(Qt.RightDockWidgetArea | Qt.LeftDockWidgetArea)
16         #设置停靠窗口的可停靠区域
17         #Qt.LeftDockWidgetArea   可在左边停靠
18         #Qt.RightDockWidgetArea   可在右边停靠
19         #Qt.TopDockWidgetArea    可在顶部停靠
20         #Qt.BottomDockWidgetArea    底部
21         #Qt.AllDockWidgetAreas   全部区域
22         #Qt.NoDockWidgetArea     不可停靠(将不显示Widget)
23         self.dock2.setAllowedAreas(Qt.RightDockWidgetArea | Qt.TopDockWidgetArea)
24         self.dock3.setAllowedAreas(Qt.NoDockWidgetArea)
25 
26         self.dock1.setFeatures(QDockWidget.DockWidgetMovable | QDockWidget.DockWidgetFloatable )
27         #设置停靠窗口的功能属性
28         #QDockWidget.DockWidgetClosable =0x01   可关闭停靠窗口
29         #QDockWidget.DockWidgetMovable=0x02     停靠窗口可在停靠区域中进行移动
30         #QDockWidget.DockWidgetFloatable=0x04   停靠窗口可与主窗口分离,以一种浮动的独立窗口显示
31         #QDockWidget.DockWidgetVerticalTitleBar=0x08  在停靠窗口中的左侧显示一个标签栏。【标题栏放在左侧】
32         #QDockWidget.AllDockWidgetFeatures   前三种的全部功能,即可关闭,可移动和可浮动。由于日后官方会往停靠窗口中加入更多新功能属性,所以请慎用该参数
33         #QDockWidget.NoDockWidgetFeatures=0x00  停靠窗口无法被关闭,移动或以浮动状态显示
34         self.dock2.setFeatures(QDockWidget.DockWidgetMovable | QDockWidget.DockWidgetClosable)
35         self.dock3.setFeatures(QDockWidget.DockWidgetClosable )
36 
37 
38         self.text1 = QTextEdit()
39         self.text2 = QTextEdit()
40         self.text3 = QTextEdit()
41 
42         self.dock1.setWidget(self.text1)  #给停靠窗口设置一个实际窗口(或控件)
43         self.dock2.setWidget(self.text2)
44         self.dock3.setWidget(self.text3)
45         46         
47         self.addDockWidget(Qt.RightDockWidgetArea, self.dock1)#在主窗口中添加停靠窗口
48         #参数1:停靠窗口的起始位置
49         #参数2:添加的停靠窗口
50         self.addDockWidget(Qt.RightDockWidgetArea, self.dock2)
51         self.addDockWidget(Qt.RightDockWidgetArea, self.dock3)
52 
53 
54         self.center_text = QTextEdit()
55         self.setCentralWidget(self.center_text)#设置中央控件
56 
57 
58 if __name__ == '__main__':
59     app = QApplication(sys.argv)
60     demo = Demo()
61     demo.show()
62     sys.exit(app.exec_())
原文地址:https://www.cnblogs.com/liming19680104/p/10393883.html