我 的 个 人 主 页: 失心疯的个人主页
入 门 教 程 推 荐 : Python零基础入门教程合集
虚 拟 环 境 搭 建 : Python项目虚拟环境(超详细讲解)
PyQt5 系 列 教 程: Python GUI(PyQt5)文章合集
Oracle数据库教程: Oracle数据库文章合集
优 质 资 源 下 载 : 资源下载合集
QDockWidget(parent, flags) # 创建对象的同时设置父对象,并设置窗口标志
QDockWidget(title, parent, flags) # 创建对象的同时设置窗口标题和父对象,并设置窗口标志
# 参数 flags
# Qt.MSWindowsFixedSizeDialogHint # 窗口无法调整大小
# Qt.FramelessWindowHint # 窗口无边框
# Qt.CustomizeWindowHint # 有边框但无标题栏和按钮,不能移动和拖动。
# Qt.WindowTitleHint # 添加标题栏和一个不可用的关闭按钮
# Qt.WindowSystemMenuHint # 添加系统目录和一个关闭按钮
# Qt.WindowMaximizeButtonHint # 激活最大化和关闭按钮,禁止最小化按钮
# Qt.WindowMinimizeButtonHint # 激活最小化和关闭按钮,禁止最大化按钮
# Qt.WindowMinMaxButtonsHint # 激活最小化,最大化和关闭按钮
# Qt.WindowCloseButtonHint # 添加一个关闭按钮
# Qt.WindowContextHelpButtonHint # 添加问号和关闭按钮,同对话框
# Qt.WindowStaysOnTopHint # 窗口始终处于顶层位置(QQ登录界面)
# Qt.WindowStaysOnBottomHint # 窗口始终处于底层位置
setWidget() # 在Dock窗口区域设置QWidget
setFloating() # 设置Dock窗口是否可以浮动
setTitleBarWidget(QWidget) # 设置停靠窗口标题栏控件
setAllowedAreas(Qt.DockWidgetAreas) # 设置窗口可以停靠的区域
# 参数 Qt.DockWidgetAreas
# Qt.LeftDockWidgetArea # 窗口可在左侧停靠;
# Qt.RightDockWidgetArea # 窗口可在右侧停靠;
# Qt.TopDockWidgetArea # 窗口可在顶端停靠;
# Qt.BottomDockWidgetArea # 窗口可在底端停靠;
# Qt.AllDockWidgetArea # 窗口可在任意方向停靠;
# Qt.NoDockWidgetArea # 只可停靠在插入处
setFeatures(QDockWidget.DockWidgetFeatures) # 设置停靠窗口的功能属性
# 参数 QDockWidget.DockWidgetFeatures
# QDockWidget.DockWidgetClosable # 允许关闭,在一些系统上会显示一个关闭按钮;
# QDockWidget.DockWidgetMovable # 允许在Dock之间移动;
# QDockWidget.DockWidgetFloatable # 允许作为一个独立窗口浮动;
# QDockWidget.DockWidgetVerticalTitleBar # 在Dock左侧显示一个垂直标题栏;
# QDockWidget.AllDockWidgetFeatures # 具有前三种属性的所有功能;
# QDockWidget.NoDockWidgetFeatures # 无具体特性设置,无法关闭、移动或者浮动
addDockWidget(Qt.DockWidgetArea, QDockWidget) # 添加一个给定的停靠窗口到指定区域
addDockWidget(Qt.DockWidgetArea, QDockWidget, Qt.Orientation) # 添加一个给定的停靠窗口到指定区域
# 参数 Qt.DockWidgetAreas
# Qt.LeftDockWidgetArea # 窗口可在左侧停靠;
# Qt.RightDockWidgetArea # 窗口可在右侧停靠;
# Qt.TopDockWidgetArea # 窗口可在顶端停靠;
# Qt.BottomDockWidgetArea # 窗口可在底端停靠;
# Qt.AllDockWidgetArea # 窗口可在任意方向停靠;
# Qt.NoDockWidgetArea # 只可停靠在插入处
# 参数 Qt.Orientation
# Qt.Horizontal # 水平方向
# Qt.Vertical # 垂直方向
splitDockWidget(QDockWidget, QDockWidget, Qt.Orientation) # 把两个dock进行左右或上下并排布置,做成一个类似QSplitter的功能
# 参数 Qt.Orientation
# Qt.Horizontal # 水平方向
# Qt.Vertical # 垂直方向
tabifyDockWidget(QDockWidget, QDockWidget) # 移动第二个停靠窗口到第一个停靠窗口
# 可以在主窗口中生成一个标签样式的停靠窗口
tabifiedDockWidgets(QDockWidget) # 返回和指定停靠窗口形成标签样式的停靠窗口列表
removeDockWidget(QDockWidget) # 从主窗口布局中移除停靠窗口,并隐藏它
# 注意,停靠窗口并不会被删除
restoreDockWidget(QDockWidget) # 恢复停靠窗口的状态
dockWidgetArea(QDockWidget) # 返回指定停靠窗口的停靠区域,返回值为Qt. DockWidgetArea的相关取值
resizeDocks(Iterable[QDockWidget], Iterable[int], Qt.Orientation) # 改变指定停靠窗口列表的尺寸
setDockNestingEnabled(bool) # 设置停靠窗口是否可以嵌套
isDockNestingEnabled() -> bool # 返回停靠窗口是否有可嵌套的特性
setDockOptions(QMainWindow.DockOptions) # 设置停靠窗口的停靠属性
# 参数 QMainWindow.DockOptions
# QMainWindow.AnimatedDocks # 动画方式停靠
# QMainWindow.AllowNestedDocks # 允许嵌套
# QMainWindow.AllowTabbedDocks # 允许标签页方式停靠
# QMainWindow.ForceTabbedDocks # 强制标签页方式停靠
# QMainWindow.VerticalTabs # 垂直标签页方式
# QMainWindow.GroupedDragging # 允许成组拖动标签页停靠窗口
allowedAreasChanged(allowedAreas) # 停靠窗口的允许停靠区域发生了改变时,发射该信号
dockLocationChanged(area) # 停靠窗口的位置发生了改变时,发射该信号
featuresChanged(features) # 停靠窗口的特性发生了改变时,发射该信号
topLevelChanged(topLevel) # 停靠窗口的浮动属性发生了改变时,发射该信号
visibilityChanged(visible) # 停靠窗口的可视属性(显示/隐藏)发生改变时,发射该信号
from PyQt5.Qt import *
import sys
class Windows(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('QDockWidget')
self.resize(500, 300)
self.widget_list()
def widget_list(self):
self.add_widget()
def add_widget(self):
# 创建QDockWidget控件
dockw = QDockWidget('浮动框1')
# 创建QWidget控件,用做QDockWidget子控件,承载多个其他控件
sub_w = QWidget()
# 将QWidget控件绑定给QDockWidget控件
dockw.setWidget(sub_w)
# 给QMainWindow主窗口中间区域设置控件
self.setCentralWidget(QTextEdit())
# 将QDockWidget控件添加到QMainWindow主窗口左侧
self.addDockWidget(Qt.LeftDockWidgetArea, dockw)
# 创建一批子控件
btn1 = QPushButton('按钮1')
btn2 = QPushButton('按钮2')
btn3 = QPushButton('按钮3')
cmb = QComboBox()
cmb.addItems(['北京','上海','深圳','广东','香港','澳门'])
# 创建一个垂直布局,用于给sub_w布局
hlayout = QVBoxLayout()
hlayout.addWidget(btn1)
hlayout.addWidget(btn2)
hlayout.addWidget(btn3)
hlayout.addWidget(cmb)
# 将布局绑定给sub_w控件
sub_w.setLayout(hlayout)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Windows()
window.show()
sys.exit(app.exec_())
from PyQt5.Qt import *
import sys
class Windows(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('QDockWidget')
self.resize(500, 300)
self.widget_list()
def widget_list(self):
self.add_widget()
def add_widget(self):
# 创建QDockWidget控件
self.dockw = QDockWidget('浮动框1')
# 创建QWidget控件,用做QDockWidget子控件,承载多个其他控件
self.sub_w = QWidget()
# 将QWidget控件绑定给QDockWidget控件
# 给QMainWindow主窗口中间区域设置控件
self.setCentralWidget(QTextEdit())
# 将QDockWidget控件添加到QMainWindow主窗口左侧
self.addDockWidget(Qt.LeftDockWidgetArea, self.dockw)
# 创建一批子控件
btn1 = QPushButton('按钮1')
btn2 = QPushButton('按钮2')
btn3 = QPushButton('按钮3')
cmb = QComboBox()
cmb.addItems(['北京','上海','深圳','广东','香港','澳门'])
self.sub_ls = [btn1, btn2, btn3, cmb]
self.create_layout(1)
self.dockw.dockLocationChanged.connect(self.locationchang)
def locationchang(self, area):
self.create_layout(area)
def create_layout(self, area):
# 创建一个垂直布局,用于给sub_w布局
if area == 1 or area == 2:
layout = QVBoxLayout()
elif area == 0 or area == 4 or area == 8:
layout = QHBoxLayout()
self.sub_win_layout(layout)
def sub_win_layout(self, layout):
for sub_wd in self.sub_ls:
# print(sub_w)
layout.addWidget(sub_wd)
# 将布局绑定给sub_w控件
self.sub_w.setLayout(layout)
self.dockw.setWidget(self.sub_w)
print('重新布局结束')
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Windows()
window.show()
sys.exit(app.exec_())