ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 05.12.2023
Просмотров: 867
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
556
Часть II. Библиотека PyQt 5 24.1.1. Класс QColor: цвет
Класс
QColor описывает цвет в цветовых моделях RGB, CMYK, HSV или HSL. Форматы конструктора класса
QColor
:
<Объект> = QColor()
<Объект> = QColor(<Красный>, <Зеленый>, <Синий>[, alpha=255])
<Объект> = QColor(<Строка>)
<Объект> = QColor(<Атрибут цвета>)
<Объект> = QColor(<Число>)
<Объект> = QColor(
Первый конструктор создает невалидный объект. Проверить объект на валидность можно с помощью метода isValid()
. Метод возвращает значение
True
, если объект является валидным, и
False
— в противном случае.
Второй конструктор позволяет указать целочисленные значения красной, зеленой и синей составляющих цвета модели RGB. В качестве параметров указываются числа от
0
до
255
Необязательный параметр alpha задает степень прозрачности цвета. Значение
0
соответст- вует прозрачному цвету, а значение
255
— полностью непрозрачному.
Вот пример указания красного цвета: red = QtGui.QColor(255, 0, 0)
В третьем конструкторе цвет указывается в виде строки в форматах "#RGB"
,
"#RRGGBB"
,
"#AARRGGBB"
(здесь
AA
обозначает степень прозрачности цвета),
"#RRRGGGBBB"
,
"#RRRRGGGGBBBB"
,
"Название цвета"
или "transparent"
(для прозрачного цвета): red = QtGui.QColor("#f00") darkBlue = QtGui.QColor("#000080") semiTransparentDarkBlue = QtGui.QColor("#7F000080") white = QtGui.QColor("white")
Получить список всех поддерживаемых названий цветов позволяет статический метод colorNames()
. Проверить правильность строки с названием цвета можно с помощью стати- ческого метода isValidColor(<Строка>)
, который возвращает значение
True
, если строка является правильным наименованием цвета, и
False
— в противном случае: print(QtGui.QColor.colorNames()) # ['aliceblue', 'antiquewhite', ...] print(QtGui.QColor.isValidColor("lightcyan")) # True
В четвертом конструкторе указываются следующие атрибуты из класса
QtCore.Qt
: white
, black
, red
, darkRed
, green
, darkGreen
, blue
, darkBlue
, cyan
, darkCyan
, magenta
, darkMagenta
, yellow
, darkYellow
, gray
, darkGray
, lightGray
, color0
, color1
или transparent
(прозрачный цвет). Атрибуты color0
(прозрачный цвет) и color1
(непрозрачный цвет) используются в двухцветных изображениях: black = QtCore.Qt.black
В пятом конструкторе указывается целочисленное значение цвета, а шестой конструктор создает новый объект на основе указанного в параметре.
Задать или получить значения в цветовой модели RGB (Red, Green, Blue — красный, зеле- ный, синий) позволяют следующие методы:
setNamedColor(<Строка>)
— задает название цвета в виде строки в форматах "#RGB"
,
"#RRGGBB"
,
"#AARRGGBB"
,
"#RRRGGGBBB"
,
"#RRRRGGGGBBBB"
,
"Название цвета"
или "transparent"
(для прозрачного цвета);
Глава 24. Работа с графикой
557
name()
— возвращает строковое представление цвета в формате "#RRGGBB"
;
name(<Формат>)
— возвращает строковое представление цвета в заданном формате.
В качестве формата указывается один из атрибутов класса
QColor
:
HexRgb
(
0
, формат "#RRGGBB"
) или
HexArgb
(
1
, формат "#AARRGGBB"
);
setRgb(<Красный>, <Зеленый>, <Синий>[, alpha=255])
— задает целочисленные значе- ния красной, зеленой и синей составляющих цвета модели RGB. В качестве параметров указываются числа от
0
до
255
. Необязательный параметр alpha задает степень прозрач- ности цвета: значение
0
соответствует прозрачному цвету, а значение
255
— полностью непрозрачному;
setRgb(<Число>)
и setRgba(<Число>)
— задают целочисленное значение цвета, второй метод — со степенью прозрачности;
setRed(<Красный>)
, setGreen(<Зеленый>)
, setBlue(<Синий>)
и setAlpha(<Прозрачность>)
— задают значения отдельных составляющих цвета. В качестве параметров указываются числа от
0
до
255
;
fromRgb(<Красный>, <Зеленый>, <Синий>[, alpha=255])
— возвращает экземпляр класса
QColor с указанными значениями. В качестве параметров указываются числа от
0
до
255
: white = QtGui.QColor.fromRgb(255, 255, 255, 255)
Метод является статическим;
fromRgb(<Число>)
и fromRgba(<Число>)
— возвращают экземпляр класса
QColor со значе- ниями, соответствующими целым числам, которые указаны в параметрах: white = QtGui.QColor.fromRgba(4294967295)
Метод является статическим;
getRgb()
— возвращает кортеж из четырех целочисленных значений
(<Красный>, <Зеле- ный>, <Синий>, <Прозрачность>)
;
red()
, green()
, blue()
и alpha()
— возвращают целочисленные значения отдельных со- ставляющих цвета;
rgb()
и rgba()
— возвращают целочисленное значение цвета;
setRgbF(<Красный>, <Зеленый>, <Синий>[, alpha=1.0])
— задает значения красной, зе- леной и синей составляющих цвета модели RGB. В качестве параметров указываются вещественные числа от
0.0
до
1.0
. Необязательный параметр alpha задает степень про- зрачности цвета: значение
0.0
соответствует прозрачному цвету, а значение
1.0
— пол- ностью непрозрачному;
setRedF(<Красный>)
, setGreenF(<Зеленый>)
, setBlueF(<Синий>)
и setAlphaF(<Прозрачность>)
— задают значения отдельных составляющих цвета. В качестве параметров указываются вещественные числа от
0.0
до
1.0
;
fromRgbF(<Красный>, <Зеленый>, <Синий>[, alpha=1.0])
— возвращает экземпляр клас- са
QColor с указанными значениями. В качестве параметров указываются вещественные числа от
0.0
до
1.0
: white = QtGui.QColor.fromRgbF(1.0, 1.0, 1.0, 1.0)
Метод является статическим;
getRgbF()
— возвращает кортеж из четырех вещественных значений
(<Красный>, <Зеле- ный>, <Синий>, <Прозрачность>)
;
558
Часть II. Библиотека PyQt 5
redF()
, greenF()
, blueF()
и alphaF()
— возвращают вещественные значения отдельных составляющих цвета;
lighter([factor=150])
— если параметр имеет значение больше
100
, то возвращает новый объект с более светлым цветом, а если меньше
100
— то с более темным;
darker([factor=200])
— если параметр имеет значение больше
100
, то возвращает новый объект с более темным цветом, а если меньше
100
— то с более светлым.
Задать или получить значения в цветовой модели CMYK (Cyan, Magenta, Yellow, Key — голубой, пурпурный, желтый, «ключевой», он же черный) позволяют следующие методы:
setCmyk(<Голубой>, <Пурпурный>, <Желтый>, <Черный>[, alpha=255])
— задает цело- численные значения составляющих цвета модели CMYK. В качестве параметров указы- ваются числа от
0
до
255
. Необязательный параметр alpha задает степень прозрачности цвета: значение
0
соответствует прозрачному цвету, а значение
255
— полностью непро- зрачному;
fromCmyk(<Голубой>, <Пурпурный>, <Желтый>, <Черный>[, alpha=255])
— возвращает экземпляр класса
QColor с указанными значениями. В качестве параметров указываются числа от
0
до
255
: white = QtGui.QColor.fromCmyk(0, 0, 0, 0, 255)
Метод является статическим;
getCmyk()
— возвращает кортеж из пяти целочисленных значений
(<Голубой>, <Пурпур- ный>, <Желтый>, <Черный>, <Прозрачность>)
;
cyan()
, magenta()
, yellow()
, black()
и alpha()
— возвращают целочисленные значения отдельных составляющих цвета;
setCmykF(<Голубой>, <Пурпурный>, <Желтый>, <Черный>[, alpha=1.0])
— задает значе- ния составляющих цвета модели CMYK. В качестве параметров указываются вещест- венные числа от
0.0
до
1.0
. Необязательный параметр alpha задает степень прозрачно- сти цвета: значение
0.0
соответствует прозрачному цвету, а значение
1.0
— полностью непрозрачному;
fromCmykF(<Голубой>, <Пурпурный>, <Желтый>, <Черный>[, alpha=1.0])
— возвращает экземпляр класса
QColor с указанными значениями. В качестве параметров указываются вещественные числа от
0.0
до
1.0
: white = QtGui.QColor.fromCmykF(0.0, 0.0, 0.0, 0.0, 1.0)
Метод является статическим;
getCmykF()
— возвращает кортеж из пяти вещественных значений
(<Голубой>, <Пурпур- ный>, <Желтый>, <Черный>, <Прозрачность>)
;
cyanF()
, magentaF()
, yellowF()
, blackF()
и alphaF()
— возвращают вещественные зна- чения отдельных составляющих цвета.
Задать или получить значения в цветовой модели HSV (Hue, Saturation, Value — оттенок, насыщенность, значение, она же яркость) позволяют следующие методы:
setHsv(<Оттенок>, <Насыщенность>, <Значение>[, alpha=255])
— задает целочислен- ные значения составляющих цвета модели HSV. В первом параметре указывается число от
0
до
359
, а в остальных параметрах — числа от
0
до
255
;
Глава 24. Работа с графикой
559
fromHsv(<Оттенок>, <Насыщенность>, <Значение>[, alpha=255])
— возвращает экземп- ляр класса
QColor с указанными значениями: white = QtGui.QColor.fromHsv(0, 0, 255, 255)
Метод является статическим;
getHsv()
— возвращает кортеж из четырех целочисленных значений
(<Оттенок>, <Насы- щенность>, <Значение>, <Прозрачность>)
;
hsvHue()
, hsvSaturation()
, value()
и alpha()
— возвращают целочисленные значения отдельных составляющих цвета;
setHsvF(<Оттенок>, <Насыщенность>, <Значение>[, alpha=1.0])
— задает значения со- ставляющих цвета модели HSV. В качестве параметров указываются вещественные чис- ла от
0.0
до
1.0
;
fromHsvF(<Оттенок>, <Насыщенность>, <Значение>[, alpha=1.0])
— возвращает экземп- ляр класса
QColor с указанными значениями. В качестве параметров указываются веще- ственные числа от
0.0
до
1.0
: white = QtGui.QColor.fromHsvF(0.0, 0.0, 1.0, 1.0)
Метод является статическим;
getHsvF()
— возвращает кортеж из четырех вещественных значений
(<Оттенок>, <Насы- щенность>, <Значение>, <Прозрачность>)
;
hsvHueF()
, hsvSaturationF()
, valueF()
и alphaF()
— возвращают вещественные значе- ния отдельных составляющих цвета.
Цветовая модель HSL (Hue, Saturation, Lightness — оттенок, насыщенность, яркость) отли- чается от модели HSV только последней составляющей. Описание этой модели и полный перечень методов для установки и получения значений вы найдете в соответствующей документации.
Для получения типа используемой модели и преобразования между моделями предназначе- ны следующие методы:
spec()
— позволяет узнать тип используемой модели. Возвращает значение одного из следующих атрибутов, определенных в классе
QColor
:
Invalid
(
0
),
Rgb
(
1
),
Hsv
(
2
),
Cmyk
(
3
) или
Hsl
(
4
);
convertTo(<Тип модели>)
— преобразует тип модели. В качестве параметра указываются атрибуты, которые приведены в описании метода spec()
. Метод возвращает новый объ- ект. Пример преобразования: whiteHSV = QtGui.QColor.fromHsv(0, 0, 255) whiteRGB = whiteHSV.convertTo(QtGui.QColor.Rgb)
Вместо метода convertTo()
удобнее воспользоваться методами toRgb()
, toCmyk()
, toHsv()
или toHsl()
, которые возвращают новый объект: whiteHSV = QtGui.QColor.fromHsv(0, 0, 255) whiteRGB = whiteHSV.toRgb()
24.1.2. Класс QPen: перо
Класс
QPen описывает виртуальное перо, с помощью которого производится рисование то- чек, линий и контуров фигур. Форматы конструктора класса:
560
Часть II. Библиотека PyQt 5
<Объект> = QPen()
<Объект> = QPen(
<Объект> = QPen(<Стиль>)
<Объект> = QPen(
<Объект> = QPen(
Первый конструктор создает перо черного цвета с настройками по умолчанию. Второй кон- структор задает только цвет пера с помощью экземпляра класса
QColor
. Третий конструктор позволяет указать стиль линии — в качестве значения указываются следующие атрибуты класса
QtCore.Qt
:
NoPen
—
0
— линия не выводится;
SolidLine
—
1
— сплошная линия;
DashLine
—
2
— штриховая линия;
DotLine
—
3
— точечная линия;
DashDotLine
—
4
— штрих и точка, штрих и точка и т. д.;
DashDotDotLine
—
5
— штрих и две точки, штрих и две точки и т. д.;
CustomDashLine
—
6
— пользовательский стиль.
Четвертый конструктор позволяет задать все характеристики пера за один раз: в первом параметре указывается экземпляр класса
QBrush или
QColor
, ширина линии передается во втором параметре, стиль линии — в необязательном параметре style
, а необязательный параметр cap задает стиль концов линии, где в качестве значения указываются следующие атрибуты класса
QtCore.Qt
:
FlatCap
—
0
— квадратный конец линии. Длина линии не превышает указанных гранич- ных точек;
SquareCap
—
16
— квадратный конец линии. Длина линии увеличивается с обоих концов на половину ширины линии;
RoundCap
—
32
— скругленные концы. Длина линии увеличивается с обоих концов на половину ширины линии.
Необязательный параметр join задает стиль перехода одной линии в другую — в качестве значения указываются следующие атрибуты класса
QtCore.Qt
:
MiterJoin
—
0
— линии соединяются под острым углом;
BevelJoin
—
64
— пространство между концами линий заполняется цветом линии;
RoundJoin
—
128
— скругленные углы;
SvgMiterJoin
—
256
— линии соединяются под острым углом, как определено в специ- фикации SVG 1.2 Tiny.
Последний конструктор создает новый объект на основе указанного в параметре.
Класс
QPen поддерживает следующие методы (здесь приведены только основные — полный их список можно найти на странице https://doc.qt.io/qt-5/qpen.html):
setColor(
— задает цвет линии;
setBrush(
— задает кисть;
setWidth(<Ширина типа int>)
и setWidthF(<Ширина типа float>)
— задают ширину ли- нии целым числом или числом с плавающей точкой соответственно;
Глава 24. Работа с графикой
561
setStyle(<Стиль>)
— задает стиль линии (см. значения параметра style в четвертом формате конструктора класса
QPen
);
setCapStyle(<Стиль>)
— задает стиль концов линии (см. значения параметра cap в чет- вертом формате конструктора класса
QPen
);
setJoinStyle(<Стиль>)
— задает стиль перехода одной линии в другую (см. значения параметра join в четвертом формате конструктора класса
QPen
).
24.1.3. Класс QBrush: кисть
Класс
QBrush описывает виртуальную кисть, с помощью которой производится заливка фи- гур. Форматы конструктора класса:
<Объект> = QBrush()
<Объект> = QBrush(
<Объект> = QBrush(<Атрибут цвета>[, style=SolidPattern])
<Объект> = QBrush(<Стиль кисти>)
<Объект> = QBrush(
<Объект> = QBrush(
<Объект> = QBrush(<Атрибут цвета>,
<Объект> = QBrush(
<Объект> = QBrush(
<Объект> = QBrush(
Параметр
задает цвет кисти в виде экземпляра класса
QColor
, а параметр
<Атрибут цвета>
— в виде атрибута класса
QtCore.Qt
(например, black
).
В параметрах
<Стиль кисти>
и style указываются атрибуты класса
QtCore.Qt
, задающие стиль кисти:
NoBrush
,
SolidPattern
,
Dense1Pattern
,
Dense2Pattern
,
Dense3Pattern
,
Dense4Pattern
,
Dense5Pattern
,
Dense6Pattern
,
Dense7Pattern
,
CrossPattern и др. С по- мощью этого параметра можно сделать цвет сплошным (
SolidPattern
) или имеющим тек- стуру (например, атрибут
CrossPattern задает текстуру в виде сетки).
Параметр
позволяет установить градиентную заливку. В качестве значения указываются экземпляры классов, порожденных от класса
QGradient
:
QLinearGradient
(линейный градиент),
QConicalGradient
(конический градиент) или
QRadialGradient
(ра- диальный градиент). За подробной информацией по этим классам обращайтесь к соответст- вующей документации.
Параметры
и
предназначены для установки изображения в качестве тек- стуры, которой будут заливаться рисуемые фигуры.
Класс
QBrush поддерживает следующие полезные для нас методы (полный их список приве- ден на странице https://doc.qt.io/qt-5/qbrush.html):
setColor(
и setColor(<Атрибут цвета>)
— задают цвет кисти;
setStyle(<Стиль>)
— задает стиль кисти (см. значения параметра style в конструкторе класса
QBrush
);
setTexture(
— устанавливает растровое изображение в качестве текстуры.
Можно указать экземпляр класса
QPixmap или
QBitmap
;
setTextureImage(
— устанавливает изображение в качестве текстуры.