主页 > 开源代码  > 

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

PySide6GUI学习笔记——常用类及控件使用方法(常用类尺寸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)根据给定的width和height构造一个尺寸,__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
标签:

PySide6GUI学习笔记——常用类及控件使用方法(常用类尺寸QSize)由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“PySide6GUI学习笔记——常用类及控件使用方法(常用类尺寸QSize)