PySide6 GUI 学习笔记——常用类及控件使用方法(常用类坐标点QPoint)

控件是PySide设计好的能承载用户输入、输出的小窗体,将多个控件有机整合,能形成用户所需要的界面。而每一个控件,都有属于自己的属性、方法、信号、槽函数和事件(event),且控件与控件之间又有继承关系。

GUI编程常用类

PySide GUI变成经常用到坐标点(位置)、尺寸、矩形框、页边距、字体、颜色、调色板、图像、图标、光标和地址(QUrl)等类。

坐标点类之------QPoint

QPoint通过整数精度,在平面上定义一个点。PySide的点和Windows窗体类似,以左上方为坐标原点,从左至右是x轴方向,自上往下是y轴方向。

QPoint官方文档

概述
方法

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)"空点",即坐标原点。

python 复制代码
    # 带参数构造一个点
    point_param = QPoint(5, 6)
    # 默认构造方法,构造一个远点
    origin = QPoint()

输出这两个点,分别是:

PySide6.QtCore.QPoint(5, 6)

PySide6.QtCore.QPoint(0, 0)

  • __reduce__()

Python的特殊方法,将Python对象序列化(pickle)时,会调用这个方法,如:

python 复制代码
    p = QPoint(6, 8)
    print(pickle.dumps(p))
  • __repr__()

用于定义对象的字符串表示形式。当你直接打印一个类的实例化对象时,Python 会自动调用该方法,以输出对象的自我描述信息。如这里的QPoint:

python 复制代码
    p = QPoint(10, 20)
    print(repr(p))  # 等同于print(p)或print(p.__repr__())
  • 空值判断isNull()

当x和y坐标均为0时,返回True,否则返回False,如:

python 复制代码
    p = QPoint()
    print(p.isNull())   # True
    notnull_pt = QPoint(1, 2)
    print(notnull_pt.isNull())  # False    
  • 曼哈顿长度manhattanLength()

曼哈顿长度,或者叫曼哈顿距离,x和y绝对值之和。

python 复制代码
    p = QPoint(12, 23)
    manhattan_dist = p.manhattanLength()
    print(manhattan_dist)    # 35
  • 不等__ne__(p2),!=

判断两个点是否相等,p2是一个QPoint对象。

python 复制代码
    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。

python 复制代码
    p = QPoint(10, 20)
    r = p * 2
    print(r)
    s = p * 1.5
    print(s)
  • 乘等*=(__imul__(factor))

QPoint乘等运算,即*=,参数可以是整型int或浮点型float因子factor。

python 复制代码
    p = QPoint(5, 8)
    p *= 2
    print(p)
    p *= 1.8
    print(p)
  • 加法运算+(__add__(p2))

QPoint加法运算。

python 复制代码
    p = QPoint(1, 2)
    q = QPoint(2, 3)
    r = p + q
    print(r)
  • 加等+=(__iadd__(p))

QPoint自增运算,举例如下:

python 复制代码
    p = QPoint(1, 2)
    q = QPoint(2, 3)
    p += q
    print(p)  
  • 取负和减法运算-(__sub__(p))

取负或减法运算:

python 复制代码
    p = QPoint(1, 1)
    q = QPoint(2, 0)
    r = p - q
    print(r)   
  • 减等-=(__isub__(p))

减等运算:

python 复制代码
    p = QPoint(1, 1)
    q = QPoint(2, 0)  
    q -= p
    print(q)  # (1, -1)
  • 除法/(__div__(divisor))以及/=

执行除法运算:

python 复制代码
    p = QPoint(10, 20)
    q = p / 2.0
    print(q)    # (5, 10)
    q /= 2.5
    print(q)    # (2, 4)
  • 判断两个点是否相等==(__eq__(p2))
python 复制代码
    p = QPoint()
    q = QPoint()
    print(p == q)   # True
  • 设置x,y值,setX()和setY()
python 复制代码
    p = QPoint(2, 3)
    p.setX(3)
    print(p)    # (3, 3)
    p.setY(6)
    print(p)    # (3, 6)
  • 转换为QPointF类型toPointF()
python 复制代码
    p = QPoint(2, 8)
    print(p.toPointF()) # (2.0, 8.0)
  • 转换为元组toTuple()
python 复制代码
    p = QPoint(3, 8)
    print(p.toTuple())  # (3, 8)
  • 转置transposed()

QPoint对象的x和y坐标对调。

python 复制代码
    p = QPoint(3, 5)
    print(p.transposed())   # (5, 3)
  • 获取x,y数值x(),y()
python 复制代码
    p = QPoint(7, 8)
    print(p.x())    # 7
    print(p.y())    # 8
相关推荐
the局外人7 分钟前
Python 中使用 SSE 实现大模型流式输出
后端·python·llm
La Pulga29 分钟前
【FreeRTOS源码学习笔记】链表的实现
数据结构·笔记·stm32·mcu·链表·嵌入式·freertos
承渊政道1 小时前
Linux网络学习【从NAT与代理服务理解网络转发、探索内网穿透原理、再到认识DNS与ICMP、最后动手部署并测试内网穿透】
linux·网络·学习·内网穿透·dns·nat
桑年1 小时前
四、Pandas数据处理
人工智能·python·线性代数·pandas·数据可视化·数据处理
第九序言T1 小时前
Python 数据处理进阶(二十四)把脚本变成工具:argparse、logging 与定时任务
python·自动化·pandas
栉甜2 小时前
Vue2学习内容(上)
前端·javascript·vue.js·学习
shelly聊外贸2 小时前
WhatsApp 聊天记录如何导出为 CSV?使用 Python 进行数据分析
开发语言·python·数据分析
shangjian0072 小时前
K8S学习-基础组件
学习·容器·kubernetes
I Am a robert girl2 小时前
从 FlowAct-R2 拆解“会说话的数字人“:流式多模态参考与主动式 Agent 规划
python·数字人·多模态大模型·扩散transformer·流式生成·agent规划
lifallen2 小时前
ub-mode skill:软件工程原则
人工智能·学习·ai·软件工程·ai编程