使用PyQt5高级界面控件之QDockWidget实现主页面模块关闭与显示
前言
QDockWidget是一个可以停靠在QMainWindow内的窗口控件,它可以保持在浮动状态或者在指定位置作为子窗口附加到主窗口中,QMainWindow类的主窗口对象保留有一个用于停靠窗口的区域,这个区域在控件的中央周围
方法 | 描述 |
---|
setWidget() | 在Dock窗口区域设置QWidget |
setFloating() | 设置Dock窗口是否可以浮动,如果设置为True,则表示可以浮动 |
setAlllowedAreas() | 在Dock窗口区域设置QWidget |
| LeftDockWidgetArea:左侧停靠区域 |
| RightDockWidgetArea:右侧停靠区域 |
| TopDockWidgetArea:顶部停靠区域 |
| BottomDockWidgetArea:底部停靠区域 |
| NoDockWidgetArea:不显示Widget |
setFearures() | 设置停靠窗口的功能属性 |
| DockWidgetClosable:可关闭 |
| DockWidgetMovable:可移动 |
| DockWidgetFloatable:可漂浮 |
| DockWidgetVerticalTitleBar:在左边显示垂直的标签栏 |
| NoDockWidgetFeatures:无法关闭,不能悬浮,不能移动 |
| AllDockWidgetFeatures:具有前三种属性的所有功能 |
import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
class MyDockDemo(QMainWindow):
def __init__(self, parent=None):
super(MyDockDemo, self).__init__(parent)
layout = QHBoxLayout()
bar = self.menuBar()
file = bar.addMenu("File")
action_exit = QAction('Exit', self)
action_exit.triggered.connect(self.close)
file.addAction(action_exit)
action_sace = QAction('Save', self)
action_sace.triggered.connect(self.save)
file.addAction(action_sace)
file.addAction("New")
file.addAction("Quit")
self.items = QDockWidget("Dockable", self)
self.listWidget = QListWidget()
self.listWidget.addItem("item1")
self.listWidget.addItem("item2")
self.listWidget.addItem("item3")
self.items.setWidget(self.listWidget)
self.items.setFloating(False)
self.setCentralWidget(QTextEdit("Hello World!"))
self.addDockWidget(Qt.RightDockWidgetArea, self.items)
self.setLayout(layout)
self.setWindowTitle("Dock Demo")
def save(self):
self.items = QDockWidget("Dockable", self)
self.listWidget = QListWidget()
self.listWidget.addItem("item1")
self.listWidget.addItem("item2")
self.listWidget.addItem("item3")
self.items.setWidget(self.listWidget)
self.items.setFloating(False)
self.setCentralWidget(QTextEdit("Hello World!"))
self.addDockWidget(Qt.RightDockWidgetArea, self.items)
if __name__ == '__main__':
app = QApplication(sys.argv)
win = MyDockDemo()
win.show()
sys.exit(app.exec_())