Python个人学习笔记 PyQt5——控件(二)
布局
垂直布局 / 水平布局
网格布局
表单布局
容器
MDI窗口

布局(Layouts)
垂直布局(Vertical Layout)/ 水平布局(Horizontal Layout)
放入垂直 / 水平布局中的控件按垂直分布,一行 / 列只能有一个控件,并会根据数量自动调节间距。
属性 / 方法
① Margin
4个内边距。
② layoutSpacing
控件之间的间距。
③ layoutStretch
在调整窗口大小时,用于指定每个部件的伸缩比例。
参数是一个列表,列表长度为布局中的部件个数,可为每个部件分配比例。
④ layoutSizeConstraint
在调整窗口大小时,用于指定每个部件的大小。
SetDefaultConstraint / SetNoConstraint:任意大小。
SetFixedSize:固定大小。
SetMinimumSize:控件大小不会小于最小值。
SetMaximumSize:控件大小不会大于最大值。
SetMinAndMaxSize:控件大小不会超出指定范围。
可对各个控件用 setMinimumSize() / setMaximumSize() 方法来指定最小值 / 最大值。
⑤ addWidget()
addWidget(a0 ,stretch ,alignment)
向布局中添加控件。
参数:
a0:控件名。
stretch:伸缩比。
alignment:对齐方式。
⑥ addStretch() / insertStretch()
添加空白。
addStretch()
参数为伸缩比,在末尾添加。
insertStretch()
第一个参数为插入的位置(索引),第二个参数为伸缩比。

网格布局(Grid Layout)
对于多行多列布局应该用网格布局,而不用垂直、水平布局的嵌套。
addWidget(a0 ,row ,column , alignment)
在指定单元格添加控件,可以直接通过Qt Designer添加。
addWidget(a0 ,row ,column ,rowSpan ,columnSpan ,alignment)
跨行/列添加控件。
row:起始行。
column:起始列。
rowSpan:跨行数。
columnSpan:跨列数。

表单布局(Form Layout)
FormLayout 是一种用于创建表单样式的布局管理器,它可以方便地组织标签和输入控件。它以一种类似于表单的方式排列控件,其中标签位于左侧,输入控件位于右侧。这种布局适用于表单输入、设置面板等场景。
属性layoutRowWrapPolicy
指定表单布局中行的换行策略。
WrapLongRows:当窗口不足以容纳所有行时,会自动换行显示行。
DontWrapRows:输入控件始终在标签右边。
WrapAllRows:输入控件始终在标签下边。即标签和输入控件分别独占一行。

容器(Containers)
MDI窗口(MDI Area)
用于同时显示多个窗口。

Qt Designer中间可以同时显示多个创建的窗口的灰色区域,就是一个MDI窗口。
常用方法
① addSubWindow()
② removeSubWindow()
只能移除QMdiSubWindow对象。
③ setActiveSubWindow()
激活子窗口。
活动子窗口是指当前用户正在操作或具有焦点的子窗口。
④ closeActiveSubWindow()
⑤ subWindowList()
获取子窗口列表。
⑥ cascadeSubWindows()
级联排列子窗口。
⑦ tileSubWindows()
平铺排列子窗口。
在MDI窗口内新建子窗口

