停靠窗口QDockWidget

停靠窗口QDockWidget

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

样式:

停靠窗口QDockWidget-LMLPHP

 import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QMainWindow, QDockWidget, QTextEdit class Demo(QMainWindow):#必须继承QMainWindow
def __init__(self):
super(Demo, self).__init__() self.dock1 = QDockWidget('Dock Window 1', self)#实例化一个停靠窗口【虚拟窗口】。参数1:停靠窗口的标题
self.dock2 = QDockWidget('Dock Window 2', self)
self.dock3 = QDockWidget('Dock Window 3', self) self.dock1.setAllowedAreas(Qt.RightDockWidgetArea | Qt.LeftDockWidgetArea)
#设置停靠窗口的可停靠区域
#Qt.LeftDockWidgetArea 可在左边停靠
#Qt.RightDockWidgetArea 可在右边停靠
#Qt.TopDockWidgetArea 可在顶部停靠
#Qt.BottomDockWidgetArea 底部
#Qt.AllDockWidgetAreas 全部区域
#Qt.NoDockWidgetArea 不可停靠(将不显示Widget)
self.dock2.setAllowedAreas(Qt.RightDockWidgetArea | Qt.TopDockWidgetArea)
self.dock3.setAllowedAreas(Qt.NoDockWidgetArea) self.dock1.setFeatures(QDockWidget.DockWidgetMovable | QDockWidget.DockWidgetFloatable )
#设置停靠窗口的功能属性
#QDockWidget.DockWidgetClosable =0x01 可关闭停靠窗口
#QDockWidget.DockWidgetMovable=0x02 停靠窗口可在停靠区域中进行移动
#QDockWidget.DockWidgetFloatable=0x04 停靠窗口可与主窗口分离,以一种浮动的独立窗口显示
#QDockWidget.DockWidgetVerticalTitleBar=0x08 在停靠窗口中的左侧显示一个标签栏。【标题栏放在左侧】
#QDockWidget.AllDockWidgetFeatures 前三种的全部功能,即可关闭,可移动和可浮动。由于日后官方会往停靠窗口中加入更多新功能属性,所以请慎用该参数
#QDockWidget.NoDockWidgetFeatures=0x00 停靠窗口无法被关闭,移动或以浮动状态显示
self.dock2.setFeatures(QDockWidget.DockWidgetMovable | QDockWidget.DockWidgetClosable)
self.dock3.setFeatures(QDockWidget.DockWidgetClosable ) self.text1 = QTextEdit()
self.text2 = QTextEdit()
self.text3 = QTextEdit() self.dock1.setWidget(self.text1) #给停靠窗口设置一个实际窗口(或控件)
self.dock2.setWidget(self.text2)
self.dock3.setWidget(self.text3) self.addDockWidget(Qt.RightDockWidgetArea, self.dock1)#在主窗口中添加停靠窗口
#参数1:停靠窗口的起始位置
#参数2:添加的停靠窗口
self.addDockWidget(Qt.RightDockWidgetArea, self.dock2)
self.addDockWidget(Qt.RightDockWidgetArea, self.dock3) self.center_text = QTextEdit()
self.setCentralWidget(self.center_text)#设置中央控件 if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())
04-14 18:30