停靠窗口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_())