PySide6 GUI 学习笔记——常用类及控件使用方法(常用类边距QMarginsF)
文章目录
- 类简介
- 方法总览
- 关键说明
- 示例代码
类简介
QMarginsF
用于定义四个浮点型边距(左、上、右、下),描述围绕矩形的边框尺寸。所有边距接近零时 isNull()
返回 True
,支持运算符重载和数学运算。
方法总览
方法名/运算符 | 参数 | 返回类型 | 描述 |
---|---|---|---|
构造函数 | |||
__init__() | - | None | 构造所有边距为0的QMarginsF对象 |
__init__(QMarginsF margins) | margins : 其他QMarginsF对象 | None | 复制构造 |
__init__(left, top, right, bottom) | left , top , right , bottom : 浮点数(必须为有限值) | None | 指定左、上、右、下边距构造 |
成员方法 | |||
bottom() | - | float | 返回底部边距 |
left() | - | float | 返回左侧边距 |
right() | - | float | 返回右侧边距 |
top() | - | float | 返回顶部边距 |
isNull() | - | bool | 所有边距接近0时返回True (使用模糊比较) |
setBottom(abottom) | abottom : 浮点数(必须为有限值) | None | 设置底部边距 |
setLeft(aleft) | aleft : 浮点数(必须为有限值) | None | 设置左侧边距 |
setRight(aright) | aright : 浮点数(必须为有限值) | None | 设置右侧边距 |
setTop(atop) | atop : 浮点数(必须为有限值) | None | 设置顶部边距 |
toMargins() | - | QMargins | 返回整数边距对象(四舍五入) |
运算符重载 | |||
+ (__add__ ) | QMarginsF 或 float | QMarginsF | 边距相加(分量分别相加) |
- (__sub__ ) | QMarginsF 或 float | QMarginsF | 边距相减(分量分别相减) |
* (__mul__ ) | float | QMarginsF | 边距各分量乘以标量 |
/ (__div__ ) | float (除数不能为0或NaN) | QMarginsF | 边距各分量除以标量 |
+= (__iadd__ ) | QMarginsF 或 float | QMarginsF | 自身边距增加(分量分别相加) |
-= (__isub__ ) | QMarginsF 或 float | QMarginsF | 自身边距减少(分量分别相减) |
*= (__imul__ ) | float | QMarginsF | 自身边距各分量乘以标量 |
/= (__idiv__ ) | float (除数不能为0或NaN) | QMarginsF | 自身边距各分量除以标量 |
== (__eq__ ) | QMarginsF | bool | 模糊比较是否相等(非严格相等) |
!= (__ne__ ) | QMarginsF | bool | 模糊比较是否不等 |
| (__or__ ) | QMarginsF | QMarginsF | 取各分量的最大值(如m1 | m2 返回各边最大值的新对象) |
特殊操作 | |||
单目- (__neg__ ) | - | QMarginsF | 返回各分量取反后的新对象 |
关键说明
- 模糊比较:
==
和!=
使用qFuzzyCompare
进行浮点数近似比较,非精确相等。 - 有限值限制:所有构造函数和设置方法要求参数为有限值(非无穷或NaN)。
- 运算符优先级:运算符重载遵循Python标准优先级规则。
- 隐式转换:
toMargins()
将浮点边距四舍五入为整数,生成QMargins
对象。
示例代码
from PySide6.QtCore import QMarginsFm1 = QMarginsF(10.5, 20.0, 30.5, 40.0)
m2 = QMarginsF(5.0, 5.0, 5.0, 5.0)# 边距相加
m_sum = m1 + m2 # QMarginsF(15.5, 25.0, 35.5, 45.0)
print(m_sum)# 标量乘法
m_scaled = m1 * 2 # QMarginsF(21.0, 40.0, 61.0, 80.0)
print(m_scaled)# 比较操作
print(m1 == m2) # False(使用模糊比较)
代码运行效果如下: