На этом шаге мы рассмотрим назначение и методы этого класса.
Класс QSize описывает размеры прямоугольной области. Для создания экземпляра класса предназначены следующие форматы конструкторов:
<Объект> = QSize() <Объект> = QSize(<Ширина>, <Высота>) <Объект> = QSize(<QSize>)
Первый конструктор создает экземпляр класса с отрицательной шириной и высотой. Второй конструктор позволяет явно указать ширину и высоту. Третий конструктор создает новый экземпляр на основе другого экземпляра. Пример:
>>> from PyQt5 import QtCore >>> s1=QtCore.QSize(); s2=QtCore.QSize(10, 55); s3=QtCore.QSize(s2) >>> s1 PyQt5.QtCore.QSize(-1, -1) >>> s2, s3 (PyQt5.QtCore.QSize(10, 55), PyQt5.QtCore.QSize(10, 55))
Через экземпляр класса доступны следующие методы:
>>> s = QtCore.QSize()
>>> s.setWidth(10); s.setHeight (55)
>>> s.width(), s.height()
(10, 55)
scale (<QSize>, <Тип преобразования>) scale (<Ширина>, <Высота>, <Тип преобразования>)
В параметре <Тип преобразования> могут быть указаны следующие атрибуты из класса QtCore.Qt:
Если новая ширина или высота имеет значение 0, то размеры изменяются непосредственно без сохранения пропорций, вне зависимости от значения параметра <<Тип преобразования>. Примеры:
>>> s = QtCore.QSize(50, 20) >>> s.scale (70, 60, QtCore.Qt.IgnoreAspectRatio); s PyQt5.QtCore.QSize(70, 60) >>> s = QtCore.QSize(50, 20) >>> s.scale (70, 60, QtCore.Qt.KeepAspectRatio); s PyQt5.QtCore.QSize(70, 28) >>> s = QtCore.QSize(50, 20) >>> s.scale (70, 60, QtCore.Qt.KeepAspectRatioByExpanding); s PyQt5.QtCore.QSize(150, 60)
>>> s1 = QtCore.QSize(50, 20)
>>> s2 = s1.scaled(70, 60, QtCore.Qt.IgnoreAspectRatio)
>>> s1, s2
(PyQt5.QtCore.QSize(50, 20), PyQt5.QtCore.QSize(70, 60))
>>> s = QtCore.QSize (50, 20) >>> s.boundedTo(QtCore.QSize(400, 5)) PyQt5.QtCore.QSize(50, 5) >>> s.boundedTo(QtCore.QSize(40, 50)) PyQt5.QtCore.QSize(40, 20)
>>> s = QtCore.QSize(50, 20) >>> s.expandedTo (QtCore.QSize(400, 5)) PyQt5.QtCore.QSize(400, 20) >>> s.expandedTo(QtCore.QSize(40, 50)) PyQt5.QtCore.QSize(50, 50)
>>> s = QtCore.QSize(50, 20)
>>> s.transpose (); s
PyQt5.QtCore.QSize(20, 50)
>>> s1 = QtCore.QSize (50, 20)
>>> s2 = s1.transposed()
>>> s1, s2
(PyQt5.QtCore.QSize(50, 20), PyQt5.QtCore.QSize(20, 50))
Над двумя экземплярами класса QSize определены операции +, +=, - (минус), -=, = и !=. Кроме того, экземпляр класса QSize можно умножить или разделить на вещественное число (операторами *, *=, / и /=). Пример:
>>> s1 = QtCore.QSize(50, 20); s2 = QtCore.QSize (10, 5) >>> s1 + s2, s1 - s2 (PyQt5.QtCore.QSize(60, 25), PyQt5.QtCore.QSize(40, 15)) >>> s1 * 2.5, s1 / 2 (PyQt5.QtCore.QSize(125, 50), PyQt5.QtCore.QSize(25, 10)) >>> s1 == s2, s1 != s2 (False, True)
На следующем шаге мы рассмотрим класс QRect.