控件是PySide设计好的能承载用户输入、输出的小窗体,将多个控件有机整合,能形成用户所需要的界面。而每一个控件,都有属于自己的属性、方法、信号、槽函数和事件(event),且控件与控件之间又有继承关系。
GUI编程常用类
PySide GUI变成经常用到坐标点(位置)、尺寸、矩形框、页边距、字体、颜色、调色板、图像、图标、光标和地址(QUrl)等类。
坐标点类之——QPoint
QPoint
通过整数精度,在平面上定义一个点。PySide的点和Windows窗体类似,以左上方为坐标原点,从左至右是x
轴方向,自上往下是y
轴方向。
概述
方法
def __init__()
def __reduce__()
def __repr__()
def isNull()
def manhattanLength()
def __ne__()
def __mul__()
def __imul__()
def __add__()
def __iadd__()
def __sub__()
def __isub__()
def __div__()
def operator/=()
def __eq__()
def setX()
def setY()
def toPointF()
def toTuple()
def transposed()
def x()
def y()
静态方法
def dotProduct()
详细描述及应用举例
在Python
脚本中,通过如下语句导入QPoint
:
from PySide6.QtCore import QPoint
- 构造方法
__init__(xpos, ypos)
和__init__()
构造方法__init__(xpos, ypos)
根据给定的x
和y
坐标构造一个点,__init__()
则构造一个坐标为(0, 0)
“空点”,即坐标原点。
# 带参数构造一个点
point_param = QPoint(5, 6)
# 默认构造方法,构造一个远点
origin = QPoint()
输出这两个点,分别是:
PySide6.QtCore.QPoint(5, 6)
PySide6.QtCore.QPoint(0, 0)
__reduce__()
Python
的特殊方法,将Python
对象序列化(pickle
)时,会调用这个方法,如:
p = QPoint(6, 8)
print(pickle.dumps(p))
__repr__()
用于定义对象的字符串表示形式。当你直接打印一个类的实例化对象时,Python 会自动调用该方法,以输出对象的自我描述信息。如这里的QPoint:
p = QPoint(10, 20)
print(repr(p)) # 等同于print(p)或print(p.__repr__())
- 空值判断
isNull()
当x
和y
坐标均为0时,返回True
,否则返回False
,如:
p = QPoint()
print(p.isNull()) # True
notnull_pt = QPoint(1, 2)
print(notnull_pt.isNull()) # False
- 曼哈顿长度
manhattanLength()
曼哈顿长度,或者叫曼哈顿距离,x
和y
绝对值之和。
p = QPoint(12, 23)
manhattan_dist = p.manhattanLength()
print(manhattan_dist) # 35
- 不等
__ne__(p2)
,!=
判断两个点是否相等,p2
是一个QPoint
对象。
p1 = QPoint(2, 5)
p2 = QPoint(3, 3)
p3 = QPoint(2, 5)
print(p1.__ne__(p2))
print(p1 != p2)
print(p1 != p3)
- 乘法运算——返回一个
QPoint
副本的乘法(*
):__mul__(factor)
QPoint
乘法运算,即*
,参数可以可以是整型int
或浮点型float
因子factor
。
p = QPoint(10, 20)
r = p * 2
print(r)
s = p * 1.5
print(s)
- 乘等
*=
(__imul__(factor)
)
QPoint
乘等运算,即*=
,参数可以是整型int
或浮点型float
因子factor
。
p = QPoint(5, 8)
p *= 2
print(p)
p *= 1.8
print(p)
- 加法运算
+
(__add__(p2)
)
QPoint
加法运算。
p = QPoint(1, 2)
q = QPoint(2, 3)
r = p + q
print(r)
- 加等
+=
(__iadd__(p)
)
QPoint
自增运算,举例如下:
p = QPoint(1, 2)
q = QPoint(2, 3)
p += q
print(p)
- 取负和减法运算
-
(__sub__(p)
)
取负或减法运算:
p = QPoint(1, 1)
q = QPoint(2, 0)
r = p - q
print(r)
- 减等
-=
(__isub__(p)
)
减等运算:
p = QPoint(1, 1)
q = QPoint(2, 0)
q -= p
print(q) # (1, -1)
- 除法
/
(__div__(divisor)
)以及/=
执行除法运算:
p = QPoint(10, 20)
q = p / 2.0
print(q) # (5, 10)
q /= 2.5
print(q) # (2, 4)
- 判断两个点是否相等
==
(__eq__(p2)
)
p = QPoint()
q = QPoint()
print(p == q) # True
- 设置
x
,y
值,setX()
和setY()
p = QPoint(2, 3)
p.setX(3)
print(p) # (3, 3)
p.setY(6)
print(p) # (3, 6)
- 转换为
QPointF
类型toPointF()
p = QPoint(2, 8)
print(p.toPointF()) # (2.0, 8.0)
- 转换为元组
toTuple()
p = QPoint(3, 8)
print(p.toTuple()) # (3, 8)
- 转置
transposed()
QPoint
对象的x
和y
坐标对调。
p = QPoint(3, 5)
print(p.transposed()) # (5, 3)
- 获取
x
,y
数值x()
,y()
p = QPoint(7, 8)
print(p.x()) # 7
print(p.y()) # 8