Главная страница

ээдд. Прохоренок_Н_А__Дронов_В_А_Python_3_и_PyQt_5_Разработка_приложен. Николай Прохоренок Владимир Дронов


Скачать 7.92 Mb.
НазваниеНиколай Прохоренок Владимир Дронов
Дата05.05.2023
Размер7.92 Mb.
Формат файлаpdf
Имя файлаПрохоренок_Н_А__Дронов_В_А_Python_3_и_PyQt_5_Разработка_приложен.pdf
ТипДокументы
#1111379
страница56 из 83
1   ...   52   53   54   55   56   57   58   59   ...   83
)
— задает форматированный текст в виде HTML-кода;
 toHtml()
— возвращает форматированный текст в виде HTML-кода;
 setFont()
— устанавливает шрифт;
 font()
— возвращает описывающий установленный шрифт экземпляр класса
QFont
;
 setDefaultTextColor()
— задает цвет текста по умолчанию;
 defaultTextColor()
— возвращает цвет текста по умолчанию;
 setTextWidth(<Ширина>)
— задает предпочитаемую ширину строки. Если текст не поме- щается в установленную ширину, он будет перенесен на новую строку;
 textWidth()
— возвращает предпочитаемую ширину текста;
 setDocument()
— задает объект документа в виде экземпляра класса
QTextDocument
(см. разд. 21.6.4);
 document()
— возвращает ссылку на объект документа (экземпляр класса
QTextDocument
; см. разд. 21.6.4);
 setTextCursor()
— устанавливает объект курсора в виде экземпляра клас- са
QTextCursor
(см. разд. 21.6.5);
 textCursor()
— возвращает объект курсора (экземпляр класса
QtextCursor
— см. разд. 21.6.5);
 setTextInteractionFlags(<Режим>)
— задает режим взаимодействия пользователя с тек- стом. По умолчанию используется режим
NoTextInteraction
, при котором пользователь не может взаимодействовать с текстом. Допустимые режимы приведены в разд. 21.1
(см. описание метода setTextInteractionFlags()
);
 setTabChangesFocus(<Флаг>)
— если в качестве параметра указано значение
False
, то нажатием клавиши можно будет вставить в текст символ табуляции. Если указано значение
True
, клавиша станет использоваться для передачи фокуса;
 setOpenExternalLinks(<Флаг>)
— если в качестве параметра указано значение
True
, щелчок на гиперссылке приведет к открытию браузера, используемого в системе по умолчанию, и загрузке страницы с указанным в гиперссылке URL-адресом. Метод рабо- тает только при использовании режима
TextBrowserInteraction

Глава 25. Графическая сцена
603
Класс
QGraphicsTextItem поддерживает следующие сигналы:
 linkActivated()
— генерируется при переходе по гиперссылке. Через параметр внутри обработчика доступен URL-адрес гиперссылки в виде строки;
 linkHovered()
— генерируется при наведении указателя мыши на гиперссылку.
Через параметр внутри обработчика доступен URL-адрес гиперссылки в виде строки.
25.5. Группировка объектов
Объединить несколько объектов в группу позволяет класс
QGraphicsItemGroup
. Над сгруп- пированными объектами можно выполнять различные преобразования, например пере- мещать или поворачивать их одновременно. Иерархия наследования для класса
QGraphicsItemGroup выглядит так:
QGraphicsItem — QGraphicsItemGroup
Формат конструктора класса:
<Объект> = QGraphicsItemGroup([parent=None])
В параметре parent можно указать ссылку на родительский объект.
Класс
QGraphicsItemGroup наследует все методы класса
QGraphicsItem и поддерживает сле- дующие методы (здесь приведены только основные — полный их список можно найти на странице https://doc.qt.io/qt-5/qgraphicsitemgroup.html):
 addToGroup()
— добавляет объект в группу;
 removeFromGroup()
— удаляет объект из группы.
Создать группу и добавить ее на сцену можно и с помощью метода createItemGroup(
<Список с объектами>)
класса
QGraphicsScene
. Метод возвращает ссылку на группу (экзем- пляр класса
QGraphicsItemGroup
). Удалить группу со сцены позволяет метод destroyItemGroup()
класса
QGraphicsScene
Добавить объект в группу позволяет также метод setGroup()
класса
QGraphicsItem
. Получить ссылку на группу, в которой находится объект, можно вызовом метода group()
класса
QGraphicsItem
. Если объект не находится ни в какой группе, метод возвращает
None
25.6. Эффекты
К графическим объектам можно применить различные эффекты, например изменение про- зрачности или цвета, отображение тени или размытие. Наследуя класс
QGraphicsEffect и переопределяя в нем метод draw()
, можно создать свой эффект.
Для установки эффекта и получения ссылки на него предназначены следующие методы класса
QGraphicsItem
:
 setGraphicsEffect()
— задает эффект;
 graphicsEffect()
— возвращает ссылку на эффект или значение
None
, если эффект не был установлен.

604
Часть II. Библиотека PyQt 5 25.6.1. Класс QGraphicsEffect
Класс
QGraphicsEffect является базовым классом для всех эффектов. Иерархия наследова- ния выглядит так:
QObject — QGraphicsEffect
Формат конструктора класса:
QGraphicsEffect([parent=None])
Класс
QGraphicsEffect поддерживает следующие основные методы (полный их список можно найти на странице https://doc.qt.io/qt-5/qgraphicseffect.html):
 draw(self, )
— собственно рисует эффект. Этот абстрактный метод должен быть переопределен в производных классах;
 setEnabled(<Флаг>)
— если в качестве параметра указано значение
False
, эффект от- ключается. Значение
True разрешает использование эффекта. Метод является слотом;
 isEnabled()
— возвращает значение
True
, если эффект включен, и
False
— в противном случае;
 update()
— вызывает перерисовку эффекта. Метод является слотом.
Класс
QGraphicsEffect поддерживает сигнал enabledChanged(<Флаг>)
, который генерирует- ся при изменении статуса эффекта. Внутри обработчика через параметр доступно значение
True
, если эффект включен, и
False
— в противном случае.
25.6.2. Тень
Класс
QGraphicsDropShadowEffect реализует вывод тени у объекта. Иерархия наследования:
QObject — QGraphicsEffect — QGraphicsDropShadowEffect
Формат конструктора класса:
<Объект> = QGraphicsDropShadowEffect([parent=None])
Класс
QGraphicsDropShadowEffect наследует все методы базовых классов и поддерживает следующие методы (здесь приведены только основные — полный их список можно найти на странице https://doc.qt.io/qt-5/qgraphicsdropshadoweffect.html):
 setColor()
— задает цвет тени. По умолчанию используется полупрозрачный темно-серый цвет (
QColor(63, 63, 63, 180)
). Метод является слотом;
 color()
— возвращает цвет тени (экземпляр класса
QColor
);
 setBlurRadius(<Значение>)
— задает радиус размытия тени в виде вещественного числа.
Метод является слотом;
 blurRadius()
— возвращает радиус размытия тени;
 setOffset()
— задает смещение тени. Форматы метода: setOffset(<По оси X>, <По оси Y>) setOffset(<Смещение по обеим осям>) setOffset()
Второй конструктор задает смещение сразу по обеим осям координат. В первом и втором конструкторах параметры задаются вещественными числами. Метод является слотом;

Глава 25. Графическая сцена
605
 offset()
— возвращает смещение тени в виде экземпляра класса
QPointF
;
 setXOffset(<Смещение>)
— задает смещение по оси
X
в виде вещественного числа. Метод является слотом;
 xOffset()
— возвращает смещение по оси
X
;
 setYOffset(<Смещение>)
— задает смещение по оси
Y
в виде вещественного числа. Метод является слотом;
 yOffset()
— возвращает смещение по оси
Y
Класс
QGraphicsDropShadowEffect поддерживает сигналы:
 colorChanged()
— генерируется при изменении цвета тени. Внутри обработчика через параметр доступен новый цвет;
 blurRadiusChanged(<Радиус размытия>)
— генерируется при изменении радиуса размы- тия. Внутри обработчика через параметр доступно новое значение в виде вещественного числа;
 offsetChanged()
— генерируется при изменении смещения. Внутри обработ- чика через параметр доступно новое значение.
25.6.3. Размытие
Класс
QGraphicsBlurEffect реализует эффект размытия. Иерархия наследования:
QObject — QGraphicsEffect — QGraphicsBlurEffect
Формат конструктора класса:
<Объект> = QGraphicsBlurEffect([parent=None])
Класс
QGraphicsBlurEffect наследует все методы из базовых классов и поддерживает сле- дующие методы (здесь приведены только основные — полный их список можно найти на странице https://doc.qt.io/qt-5/qgraphicsblureffect.html):
 setBlurRadius(<Значение>)
— задает радиус размытия в виде вещественного числа. Ме- тод является слотом;
 blurRadius()
— возвращает радиус размытия.
Класс
QGraphicsBlurEffect поддерживает сигнал blurRadiusChanged(<Радиус размытия>)
, который генерируется при изменении радиуса размытия. Внутри обработчика через пара- метр доступно новое значение в виде вещественного числа.
25.6.4. Изменение цвета
Класс
QGraphicsColorizeEffect реализует эффект изменения цвета. Иерархия наследования:
QObject — QGraphicsEffect — QGraphicsColorizeEffect
Формат конструктора класса:
<Объект> = QGraphicsColorizeEffect([parent=None])
Класс
QGraphicsColorizeEffect наследует все методы из базовых классов и поддерживает следующие методы (здесь приведены только основные — полный их список можно найти на странице https://doc.qt.io/qt-5/qgraphicscolorizeeffect.html):
 setColor()
— задает цвет. По умолчанию используется светло-синий цвет
(
QColor(0, 0, 192, 255)
). Метод является слотом;

606
Часть II. Библиотека PyQt 5
 color()
— возвращает текущий цвет в виде экземпляра класса
QColor
;
 setStrength(<Значение>)
— задает интенсивность цвета. В качестве значения указыва- ется вещественное число от
0.0
до
1.0
(значение по умолчанию). Метод является сло- том;
 strength()
— возвращает интенсивность цвета.
Класс
QGraphicsColorizeEffect поддерживает сигналы:
 colorChanged()
— генерируется при изменении цвета. Внутри обработчика через параметр доступен новый цвет;
 strengthChanged(<Интенсивность>)
— генерируется при изменении интенсивности цве- та. Внутри обработчика через параметр доступно новое значение в виде вещественного числа.
25.6.5. Изменение прозрачности
Класс
QGraphicsOpacityEffect реализует эффект прозрачности. Иерархия наследования:
QObject — QGraphicsEffect — QGraphicsOpacityEffect
Формат конструктора класса:
<Объект> = QGraphicsOpacityEffect([parent=None])
Класс
QGraphicsOpacityEffect наследует все методы базовых классов и поддерживает сле- дующие методы (здесь приведены только самые полезные — полный их список можно най- ти на странице https://doc.qt.io/qt-5/qgraphicsopacityeffect.html):
 setOpacity(<Значение>)
— задает степень прозрачности. В качестве значения указыва- ется вещественное число от
0.0
до
1.0
. По умолчанию используется значение
0.7
. Метод является слотом;
 opacity()
— возвращает степень прозрачности;
 setOpacityMask()
— задает маску. Метод является слотом;
 opacityMask()
— возвращает маску в виде экземпляра класса
QBrush
Класс
QGraphicsOpacityEffect поддерживает следующие сигналы:
 opacityChanged(<Прозрачность>)
— генерируется при изменении степени прозрачности.
Внутри обработчика через параметр доступно новое значение в виде вещественного числа;
 opacityMaskChanged()
— генерируется при изменении маски. Через параметр доступна новая маска.
25.7. Обработка событий
Все происходящие в графических объектах события изначально возникают в компоненте- представлении. Компонент-представление преобразует их и передает объекту сцены, кото- рый, в свою очередь, перенаправляет их объекту, способному обработать возникшее собы- тие (так, щелчок мыши передается объекту, который расположен по координатам щелчка).
Обработка событий в представлении ничем не отличается от обычной обработки событий, рассмотренной в главе 19. Однако обработка событий в графическом объекте имеет свои особенности, которые мы и рассмотрим в этом разделе.

Глава 25. Графическая сцена
607 25.7.1. События клавиатуры
При обработке событий клавиатуры следует учитывать, что:
 графический объект должен иметь возможность принимать фокус ввода. Для этого не- обходимо установить флаг
ItemIsFocusable
, например, с помощью метода setFlag()
класса
QGraphicsItem
;
 объект должен быть в фокусе ввода. Методы, позволяющие управлять фокусом ввода, мы рассматривали в разд. 25.1.5 и 25.3.1;
 чтобы захватить эксклюзивный ввод с клавиатуры, следует вызвать у графического объекта метод grabKeyboard()
, а чтобы освободить ввод — метод ungrabKeyboard()
;
 можно перехватить нажатие любых клавиш, кроме и +, используе- мых для передачи фокуса;
 если событие обработано, нужно вызвать метод accept()
у объекта события, в против- ном случае — метод ignore()
Для обработки событий клавиатуры следует наследовать класс, реализующий графический объект, и переопределить в нем методы:
 focusInEvent(self, )
— вызывается при получении фокуса ввода. Через пара- метр

доступен экземпляр класса
QFocusEvent
(см. разд. 19.8.1);
 focusOutEvent(self, )
— вызывается при потере фокуса ввода. Через параметр

доступен экземпляр класса
QFocusEvent
(см. разд. 19.8.1);
 keyPressEvent(self, )
— вызывается при нажатии клавиши на клавиатуре. Если клавишу удерживать нажатой, метод будет вызываться постоянно, пока ее не отпустят.
Через параметр

доступен экземпляр класса
QKeyEvent
(см. разд. 19.8.3);
 keyReleaseEvent(self, )
— вызывается при отпускании нажатой ранее клавиши.
Через параметр

доступен экземпляр класса
QKeyEvent
(см. разд. 19.8.3).
С помощью метода setFocusProxy()
класса
QGraphicsItem можно указать объект, который будет обрабатывать события клавиатуры вместо текущего объекта. Полу- чить ссылку на назначенный ранее объект-обработчик событий клавиатуры позволяет метод focusProxy()
25.7.2. События мыши
Для обработки нажатия кнопки мыши и перемещения мыши следует наследовать класс, реализующий графический объект, и переопределить в нем такие методы:
 mousePressEvent(self, )
— вызывается при нажатии кнопки мыши над объек- том. Через параметр

доступен экземпляр класса
QGraphicsSceneMouseEvent
. Если событие принято, необходимо вызвать метод accept()
объекта события, в противном случае — метод ignore()
. Если был вызван метод ignore()
, методы mouseReleaseEvent()
и mouseMoveEvent()
выполнены не будут.
С помощью метода setAcceptedMouseButtons(<Кнопки>)
класса
QGraphicsItem можно указать кнопки, события от которых объект будет принимать. По умолчанию объект принимает события от всех кнопок мыши. Если в параметре
<Кнопки>
указать атрибут
NoButton класса
QtCore.Qt
, объект вообще не станет принимать события от кнопок мыши;
 mouseReleaseEvent(self, )
— вызывается при отпускании ранее нажатой кнопки мыши. Через параметр

доступен экземпляр класса
QGraphicsSceneMouseEvent
;

608
Часть II. Библиотека PyQt 5
 mouseDoubleClickEvent(self, )
— вызывается при двойном щелчке мышью в области объекта. Через параметр

доступен экземпляр класса
QgraphicsScene-
MouseEvent
;
 mouseMoveEvent(self, )
— вызывается при перемещении мыши. Через параметр

доступен экземпляр класса
QGraphicsSceneMouseEvent
Класс
QGraphicsSceneMouseEvent наследует все методы классов
QGraphicsSceneEvent и
QEvent и добавляет поддержку следующих методов:
 pos()
— возвращает экземпляр класса
QPointF
с координатами указателя мыши в преде- лах области объекта;
 scenePos()
— возвращает экземпляр класса
QPointF
с координатами указателя мыши в пределах сцены;
 screenPos()
— возвращает экземпляр класса
QPoint с координатами указателя мыши в пределах экрана;
 lastPos()
— возвращает экземпляр класса
QPointF
с координатами последней запом- ненной представлением позиции мыши в пределах области объекта;
 lastScenePos()
— возвращает экземпляр класса
QPointF
с координатами последней запомненной представлением позиции мыши в пределах сцены;
 lastScreenPos()
— возвращает экземпляр класса
QPoint с координатами последней запомненной представлением позиции мыши в пределах экрана;
 buttonDownPos(<Кнопка>)
— возвращает экземпляр класса
QPointF
с координатами щелчка указанной кнопки мыши в пределах области объекта;
 buttonDownScenePos(<Кнопка>)
— возвращает экземпляр класса
QPointF
с координатами щелчка указанной кнопки мыши в пределах сцены;
 buttonDownScreenPos(<Кнопка>)
— возвращает экземпляр класса
QPoint с координатами щелчка указанной кнопки мыши в пределах экрана;
 button()
— возвращает обозначение кнопки мыши, нажатие которой вызвало событие;
 buttons()
— возвращает комбинацию обозначений всех кнопок мыши, одновременное нажатие которых вызвало событие;
 modifiers()
— возвращает комбинацию обозначений всех клавиш-модификаторов
(, , и др.), что были нажаты вместе с кнопкой мыши.
По умолчанию событие мыши перехватывает объект, на котором был произведен щелчок мышью. Чтобы перехватывать нажатие и отпускание мыши вне объекта, следует захватить мышь с помощью метода grabMouse()
класса
QGraphicsItem
. Освободить захваченную ранее мышь позволяет метод ungrabMouse()
. Получить ссылку на объект, захвативший мышь, можно с помощью метода mouseGrabberItem()
класса
QGraphicsScene
Для обработки прочих событий мыши нужно наследовать класс, реализующий графический объект, и переопределить следующие методы:
 hoverEnterEvent(self, )
— вызывается при наведении указателя мыши на область объекта. Через параметр

доступен экземпляр класса
1   ...   52   53   54   55   56   57   58   59   ...   83


написать администратору сайта