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

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

http://www.kler.cn/a/551172.html

相关文章:

  • Bash语言的测试开发
  • idea 2023.3.7常用插件
  • Typora导出word文件详细安装教程
  • 如何优化数据库Update锁竞争
  • 【Excel笔记_6】条件格式和自定义格式设置表中数值超过100保留1位,超过1000保留0位,低于100为默认
  • 【Python 语法】Python 正则表达式(regular expressions, regex)
  • Vue3 与 TypeScript 实战:核心细节与最佳实践
  • Redis之主从复制
  • Java 基于 SpringBoot+Vue 的动漫平台(附源码,文档)
  • Android RenderScript API废弃,迁移到高性能renderscript-toolkit及耗时优化,Kotlin
  • 设计模式14:职责链模式
  • 深入 Go 语言核心:map 和 slice 的传参有什么不同
  • DeepSeek 助力 Vue 开发:打造丝滑的颜色选择器(Color Picker)
  • MySQL的聚簇索引与非聚簇索引
  • 深入解析淘宝分类详情API接口:使用Python爬虫调用
  • 网络安全不分家 网络安全不涉及什么
  • Vue 3 中可读可写的计算属性(Computed Properties)的使用场景
  • go语言并发的最佳实践
  • 2025最新Java面试题大全(整理版)2000+ 面试题附答案详解
  • Python实战进阶 No1: RESTful API - 基于Flask的实例说明