当前位置: 首页 > news >正文

PySide6 GUI 学习笔记——常用类及控件使用方法(常用类尺寸QSize)

尺寸类之——QSize

QSize类通过整数形式定义一个二维对象的尺寸,包括宽width()和高height()

QSize官方文档

方法概述

def __init__()

def __reduce__()

def __repr__()

def boundedTo()

def expandedTo()

def grownBy()

def height()

def isEmpty()

def isNull()

def isValid()

def __ne__()

def __mul__()

def __imul__()

def __add__()

def __iadd__()

def __sub__()

def __isub__()

def __div__()

def operator/=()

def __eq__()

def scale()

def scaled()

def setHeight()

def setWidth()

def shrunkBy()

def toSizeF()

def toTuple()

def transpose()

def transposed()

def width()

方法介绍及应用举例

Python脚本中,通过from PySide6.QtCore import QSize引入QSize类。

  • 构造方法__init__(width, height)__init__()__init__(p)

构造方法__init__(width, height)根据给定的widthheight构造一个尺寸,__init__()则构造一个尺寸为(-1, -1),即宽和高均为-1的QSize尺寸对象,__init__(p)则通过一个QSize对象p来构造一个QSize对象。

    # 构造一个宽和高都是0的QSize尺寸对象
    zero_size = QSize()
    # 带参数构造一个尺寸对象
    size_param = QSize(5, 6)
    # 以一个尺寸对象作为构造参数
    size_param_from_size = QSize(size_param)
    size_param_from_size.setHeight(7)
    print(size_param)   # PySide6.QtCore.QSize(5, 6)
    print(zero_size)    # PySide6.QtCore.QSize(-1, -1)
    print(size_param_from_size) # PySide6.QtCore.QSize(5, 7)
  • __reduce__() 对象序列化方法。
    p = QSize(6, 8) # PySide6.QtCore.QSize(6, 8)
    print(p)
    # reduce_point = p.__reduce__()   
    print(pickle.dumps(p))  # b'\x80\x04\x95$\x00\x00\x00\x00\x00\x00\x00\x8c\x0ePySide6.QtCore\x94\x8c\x05QSize\x94\x93\x94K\x06K\x08\x86\x94R\x94.'
    # print(pickle.dumps(reduce_point))
  • __repr__()方法,相当于toString方法,将对象转换为字符串。
    s = QSize(6, 8)
    print(repr(s)) # 等同于print(s)或print(s.__repr__())
  • boundedTo()方法,返回一个尺寸,该尺寸是当前尺寸和给定尺寸的交集,即取两者宽最小值和高最小值形成新的尺寸对象。
    s = QSize(6, 8)
    other_size = QSize(3, 4)
    intersect = s.boundedTo(other_size)
    print(intersect)    # PySide6.QtCore.QSize(3, 4)
  • expandedTo()方法,返回一个尺寸,该尺寸是当前尺寸和给定尺寸的并集,即取两者宽最大值和高最大值形成新的尺寸对象。
    s = QSize(6, 8)
    other_size = QSize(3, 4)
    union = s.expandedTo(other_size)
    print(union)    # PySide6.QtCore.QSize(6, 8)
  • grownBy()方法,返回一个尺寸,该尺寸是当前尺寸加上边距QMargins对象后的尺寸QSize。
    margin = QMargins(2, 3, 4, 5)   # left=2, top=3, right=4, bottom=5
    grown = s.grownBy(margin)
    print(grown)    # PySide6.QtCore.QSize(12, 16)
    grown = s.grownBy(QMargins())
    print(grown)    # PySide6.QtCore.QSize(6, 8)
  • height()方法,返回当前尺寸的高度height值。
    s = QSize(6, 8)
    print(s.height())   # 8
  • isEmpty()方法,返回一个布尔值,如果当前尺宽或高小于等于0,则返回True,否则返回False
    s = QSize(6, 8)
    print(s.isEmpty())  # False
    s = QSize()
    print(s.isEmpty())  # True
    s = QSize(-8, 9)
    print(s.isEmpty())  # True
  • isNull()方法,返回一个布尔值,如果当前尺宽和高都为0,则返回True,否则返回False
    s = QSize()
    print(s.isNull())   # False
    s = QSize(5, 6)
    print(s.isNull())   # False
    s = QSize(0, 5)
    print(s.isNull())   # False
    null_size = QSize(0, 0)    # True
    print(null_size.isNull())
  • isValid()方法,返回一个布尔值,如果当前尺宽和高都大于等于0,则返回True,否则返回False
    s = QSize(6, 8)
    print(s.isValid())  # True
    s = QSize(0, 0)
    print(s.isValid())  # True
    s = QSize(-6, 8)
    print(s.isValid())  # False
    s = QSize(6, -8)
    print(s.isValid())  # False    
    s = QSize() # PySide6.QtCore.QSize(-1, -1)
    print(s.isValid())  # False
  • 不等于__ne__(),比较两个QSize尺寸是否相等,不相等时返回True,否则返回False
    s = QSize(6, 8)
    other_size = QSize(6, 8)
    print(s != other_size)  # False
    other_size.setHeight(7)
    print(s != other_size)  # True
  • 乘法__mul__(),返回一个尺寸,该尺寸是当前尺寸和给定浮点型系数的乘积(按常规四舍五入原则,非Python的round()四舍五入原则,取最接近的整数)。
    注:在Python中,round()方法的四舍五入原则遵循的是“银行家舍入法”或称为“四舍六入五成双”
    s = QSize(6, 8)
    mul_s = s * 0.2
    print(mul_s)    # PySide6.QtCore.QSize(1, 2)
    s = QSize(3, 5)
    mul_s = s * 0.5
    print(mul_s)    # PySide6.QtCore.QSize(2, 3)
    print(round(3 * 0.5))   # 2
    print(round(5 * 0.5))   # 2
  • 自乘__imul__()*=运算,返回一个尺寸,该尺寸是当前尺寸和给定浮点型系数的乘积(按常规四舍五入原则,非Python的round()四舍五入原则,取最接近的整数)。
    s = QSize(6, 8)
    s *= 0.2
    print(s)    # PySide6.QtCore.QSize(1, 2)
    s = QSize(3, 5)
    s *= 0.5
    print(s)    # PySide6.QtCore.QSize(2, 3)
  • 加法__add__()+,返回一个尺寸,该尺寸是当前尺寸和给定尺寸的加和。
    p = QSize(1, 2)
    q = QSize(2, 3)
    r = p + q
    print(r)    # PySide6.QtCore.QSize(3, 5)
  • 自加__iadd__()+=,返回一个尺寸,该尺寸是当前尺寸和给定尺寸的加和。
    p = QSize(1, 2)
    q = QSize(2, 3)
    p += q
    print(p)    # PySide6.QtCore.QSize(3, 5)  
  • 减法__sub__()-,返回一个尺寸,该尺寸是当前尺寸和给定尺寸的差。
    p = QSize(1, 2)
    q = QSize(2, 3)
    r = p - q
    print(r)    # PySide6.QtCore.QSize(-1, -1)
  • 自减__isub__()-=,返回一个尺寸,该尺寸是当前尺寸和给定尺寸的差。
    p = QSize(1, 2)
    q = QSize(2, 3)
    p -= q
    print(p)    # PySide6.QtCore.QSize(-1, -1)  
  • 除法__div__()/,返回一个尺寸,该尺寸是当前尺寸除以给定浮点型系数后的尺寸(按常规四舍五入原则,非Python的round()四舍五入原则,取最接近的整数)。
    p = QSize(9, 7)
    q = p / 3.1
    print(q)    # PySide6.QtCore.QSize(3, 2)
  • 自除/=,返回一个尺寸,该尺寸是当前尺寸除以给定浮点型系数后的尺寸(按常规四舍五入原则,非Python的round()四舍五入原则,取最接近的整数)。
    p = QSize(9, 8)
    p /= 3.2
    print(p)    # PySide6.QtCore.QSize(3, 3)
  • __eq__()==比较运算,判断两个QSize对象是否相等,相等则返回True,否则,返回False
    p = QSize(1, 2)
    q = QSize(1, 2)
    print(p == q)   # True
    p.setHeight(3)
    print(p == q)   # False
  • scale()缩放操作,根据给定的QSize尺寸或指定的宽、高缩放QSize尺寸,即scale(s, mode)scale(w, h, mode),其中缩放模式mode为宽高比模式AspectRatioMode,它包含三种模式:
    • Qt.IgnoreAspectRatio:忽略宽高比,直接缩放。
    • Qt.KeepAspectRatio:保持宽高比,缩放后,长边不会超过给定尺寸,短边可能会被裁剪。
    • Qt.KeepAspectRatioByExpanding:保持宽高比,缩放后,短边不会超过给定尺寸,长边可能会被裁剪。
    s = QSize(6, 8)
    s.scale(5, 10, Qt.KeepAspectRatio)  # s = PySide6.QtCore.QSize(5, 6)
    print(s)
    s = QSize(6, 8)
    s.scale(5, 10, Qt.KeepAspectRatioByExpanding)   # s = PySide6.QtCore.QSize(7, 10)
    print(s)
    s = QSize(6, 8)
    s.scale(5, 10, Qt.IgnoreAspectRatio)    # s = PySide6.QtCore.QSize(5, 10)
    print(s)
    s = QSize(6, 8)
    another_s = QSize(5, 10)    
    s.scale(another_s, Qt.KeepAspectRatio)  # s = PySide6.QtCore.QSize(5, 6)
    print(s)
    s = QSize(6, 8)
    s.scale(another_s, Qt.KeepAspectRatioByExpanding)   # s = PySide6.QtCore.QSize(7, 10)
    print(s)
    s = QSize(6, 8)
    s.scale(another_s, Qt.IgnoreAspectRatio)    # s = PySide6.QtCore.QSize(5, 10)
    print(s)
  • scaled()缩放返回方法,据给定的QSize尺寸或指定的宽、高缩放QSize尺寸,并作为一个新对象返回而不影响原值,包括scaled(s, mode)scaled(w, h, mode),其中缩放模式mode为宽高比模式AspectRatioMode,它包含三种模式:
    • Qt.IgnoreAspectRatio:忽略宽高比,直接缩放。
    • Qt.KeepAspectRatio:保持宽高比,缩放后,长边不会超过给定尺寸,短边可能会被裁剪。
    • Qt.KeepAspectRatioByExpanding:保持宽高比,缩放后,短边不会超过给定尺寸,长边可能会被裁剪。
    s = QSize(6, 8)
    new_s = s.scaled(5, 10, Qt.KeepAspectRatio)  # new_s = PySide6.QtCore.QSize(5, 6)
    print(new_s)
    s = QSize(6, 8)
    new_s = s.scaled(5, 10, Qt.KeepAspectRatioByExpanding)   # new_s = PySide6.QtCore.QSize(7, 10)
    print(s)    # s = Pyside6.QtCore.QSize(6, 8)
    print(new_s)
    s = QSize(6, 8)
    new_s = s.scaled(5, 10, Qt.IgnoreAspectRatio)    # new_s = PySide6.QtCore.QSize(5, 10)
    print(new_s)
    s = QSize(6, 8)
    another_s = QSize(5, 10)    
    new_s = s.scaled(another_s, Qt.KeepAspectRatio)  # new_s = PySide6.QtCore.QSize(5, 6)
    print(new_s)
    s = QSize(6, 8)
    new_s = s.scaled(another_s, Qt.KeepAspectRatioByExpanding)   # new_s = PySide6.QtCore.QSize(7, 10)
    print(new_s)
    s = QSize(6, 8)
    new_s = s.scaled(another_s, Qt.IgnoreAspectRatio)    # new_s = PySide6.QtCore.QSize(5, 10)
    print(new_s)
  • setHeight()设置QSize尺寸高度。
    s = QSize(8, 12)    # s = PySide6.QtCore.QSize(8, 12)
    s.setHeight(20)     # s = PySide6.QtCore.QSize(8, 20)
    print(s)
  • setWidth()设置QSize尺寸宽度。
    s = QSize(8, 12)    # s = PySide6.QtCore.QSize(8, 12)
    s.setWidth(20)      # s = PySide6.QtCore.QSize(20, 12)
    print(s)
  • shrunkBy()返回一个QSize尺寸,根据给定的QMargins收缩给定的QSize尺寸,形成一个新对象返回。
    s = QSize(8, 12)    # s = PySide6.QtCore.QSize(8, 12)
    new_s = s.shrunkBy(QMargins(2, 3, -1, -2))  # new_s = PySide6.QtCore.QSize(7, 11), width = 8 - 2 - (-1) = 7, height = 12 - 3 - (-2) = 11
    print(new_s)  
  • toSizeF()返回一个QSizeF尺寸,根据给定的QSize尺寸,形成一个新对象返回。
    s = QSize(8, 12)    # s = PySide6.QtCore.QSize(8, 12)
    f = s.toSizeF()     # f = PySide6.QtCore.QSizeF(8.000000, 12.000000)
    print(f)
  • toTuple()将QSize尺寸的宽和高以tuple元组的方式返回。
    s = QSize(8, 12)    # s = PySide6.QtCore.QSize(8, 12)
    print(s.toTuple())  # (8, 12)
  • transpose()修改原QSize尺寸,将其转置(宽和高交换)。
    s = QSize(8, 12)    # s = PySide6.QtCore.QSize(8, 12)
    s.transpose()
    print(s)    # PySide6.QtCore.QSize(12, 8)
  • transposed()返回一个新QSize尺寸,其宽和高被交换。
    s = QSize(8, 12)    # s = PySide6.QtCore.QSize(8, 12)
    new_s = s.transposed()
    print(s)
    print(new_s)    # PySide6.QtCore.QSize(12, 8)
  • width()返回QSize尺寸的宽度。
    s = QSize(8, 12)    # s = PySide6.QtCore.QSize(8, 12)
    print(s.width())    # 8

相关文章:

  • 【前端】Vue组件库之Element: 一个现代化的 UI 组件库
  • 在Kubernetes上部署DeepSeek-R1进行高效AI推理
  • SpringBoot 核心总结图
  • Redis 回收进程工作流程详解
  • 【Python 学习 / 5】函数详解(定义、参数、作用域、lambda、内置函数)
  • Redis 简介
  • 基于ThinkPHP 5~8兼容的推荐算法类实现,
  • TikTok 多账号管理与自动化运营:矩阵系统功能全解析
  • 软件测试面试题精选33道,附答案+文档
  • Redis 启用自动内存碎片清理异常
  • 深化与细化:提示工程(Prompt Engineering)的进阶策略与实践指南2
  • 为AI聊天工具添加一个知识系统 之108 详细设计之49 相提并论的三者、三位一体Triad和圣灵倒三角
  • Android 10.0 移除wifi功能及相关菜单
  • 前端常见面试题-2025
  • 前端开发中关于虚拟列表的实现与应用优化
  • 若依集成WebSocket
  • 如何在 GitHub 中创建一个空目录 ?
  • 如何提高网站在百度中的权重?
  • 使用OBS和nginx实现直播流
  • VUE 集成高德地图部署到nginx后打开不了,控制台报错
  • 西班牙遭遇史上最严重停电,已进入国家紧急状态
  • 诗词文赋俱当歌,听一听古诗词中的音乐性
  • 单位被裁定补缴12年社保,滞纳金该谁出?
  • 玉渊谭天丨“稀土管制让美国慌了”,美军工稀土储备仅够数月
  • 中方在IMF发声:美滥施关税威胁全球金融稳定,对新兴市场和发展中国家构成严峻挑战
  • 魔都眼丨人形机器人“华山论剑”:拳击赛缺席,足球赛抢镜