На этом шаге мы рассмотрим назначение, форматы конструктора и основные методы этого класса.
Класс QPageSize, объявленный в модуле QtGui, описывает размеры, или, говоря другими словами, формат бумаги, на которой осуществляется печать. Для указания размера бумаги, который будет использовать принтер, предназначен метод setPageSize() класса QPrinter.
Форматы конструкторов класса:
<Объект> = QPageSize() <Объект> = QPageSize(<Идентификатор размера бумаги>) <Объект> = QPageSize(<QSize>[, name=""][, matchPolicy=FuzzyMatch]) <Объект> = QPageSize(<QSizeF>, <Единица измерения>[, name=""][, matchPolicy=FuzzyMatch])
Первый формат создает "пустой" экземпляр класса, не хранящий данные ни о каком размере бумаги.
Второй формат позволяет указать размер сразу, в виде значения одного из следующих атрибутов класса QPageSize (здесь приведены только наиболее употребительные размеры - полный их список доступен на странице https://doc.qt.io/qt-5/qpagesize.html#PageSizeId-enum): А0 (5), А1 (6), А2 (7), A3 (8), А4 (0), А5 (9), Letter (2), Legal (3).
Третий и четвертый форматы служат для создания нестандартных размеров бумаги, при этом третий формат принимает в качестве первого параметра экземпляр класса QSize (см. 32 шаг), указывающий сами размеры в пунктах. В параметре name можно задать имя создаваемого размера бумаги - если он не указан, будет создано имя по умолчанию вида Custom(<Ширина>*<Высота>).
Если заданные размеры близки к размерам какого-либо из стандартных форматов бумаги, будет использован этот формат. В параметре matchPolicy можно задать режим подбора стандартного формата бумаги в виде одного из следующих атрибутов класса QPageSize:
Четвертый формат принимает в качестве первого параметра экземпляр класса QSizeF, указывающий размеры бумаги. Вторым параметром должна быть задана единица измерения размеров в виде значения одного из следующих атрибутов класса QPageSize:
Примеры:
# Задаем размер бумаги А5 ps = QtGui.QPageSize(QtGui.QPageSize. A5) printer.setPageSize(ps) # Задаем размер бумаги 100 x 100 пунктов с названием "Особый размер" sz = QtCore.QSize(400, 300) ps = QtGui.QPageSize(sz, name="Особый размер", matchPolicy = QtGui.QPageSize.FuzzyMatch) pl.printer.setPageSize(ps)
Класс QPageSize поддерживает следующие полезные для нас методы (полный их список доступен на странице https://doc.qt.io/qt-5/qpagesize.html):
s = QtGui.QPageSize.size(QtGui.QPageSize.А0, QtGui,QPageSize.Millimeter) print (s.width(), "x", s.height()) # Выведет: 841.0 x 1189.0
ps = QtGui.QPageSize(QtGui.QPageSize.A5) s = ps.sizePixels(600) print(s.width(), "x", s.height()) # Выведет: 3500 x 4958
Также класс QPageSize поддерживает операторы сравнения == и !=:
s1 = QtGui.QPageSize(QtGui.QPageSize.A4) s2 = QtGui.QPageSize(QtGui.QPageSize.A4) s3 = QtGui.QPageSize(QtGui.QPageSize.A3) rint(s1 == s2) # Выведет: True print(s1 != s3) # Выведет: True
На следующем шаге мы рассмотрим класс QPageLayout.