На этом шаге мы рассмотрим вывод в окно форматированного текста.
Класс QGraphicsTextItem описывает форматированный текст. Иерархия наследования:
(QObject, QGraphicsItem) - QGraphicsObject - QGraphicsTextItem
Форматы конструктора класса:
<Объект> = QGraphicsTextItem([parent=None]) <Объект> = QGraphicsTextItem(<Текст>[, parent=None])
В параметре parent можно указать ссылку на родительский объект.
Класс QGraphicsTextItem наследует все методы из базовых классов и поддерживает следующие методы (здесь приведены только основные - полный их список доступен на странице https://doc.qt.io/qt-5/qgraphicstextitem.html):
Класс QGraphicsTextItem поддерживает следующие сигналы:
Изменим программу, приведенную на предыдущем шаге: вместо обычного текста используем форматированный. Ниже приведен текст приложения (начало и конец изменений отмечены комментариями):
from PyQt5 import QtGui from PyQt5.QtWidgets import QApplication, QMainWindow, QGraphicsScene, QGraphicsView, QGraphicsItem, QGraphicsPixmapItem, QGraphicsTextItem from PyQt5.QtGui import QPixmap, QPainter, QFont from PyQt5.Qt import Qt import sys class Window(QMainWindow): def __init__(self): super().__init__() self.title = "Изображение в PyQt5" self.top = 200 self.left = 500 self.width = 400 self.height = 400 self.setWindowTitle(self.title) # Задание местоположения и размера окна self.setGeometry(self.left, self.top, self.width, self.height) # Создание графической сцены self.scene = QGraphicsScene() # Создание инструмента для отрисовки графической сцены self.graphicView = QGraphicsView(self.scene, self) # Задание местоположения и размера графической сцены self.graphicView.setGeometry(0, 0, self.width, self.height) def plot(self): # Создание объекта QPixmap picture = QPixmap('IMG2.jpg') # Создание "пустого" объекта QGraphicsPixmapItem image = QGraphicsPixmapItem() # Задание изображения в объект QGraphicsPixmapItem image.setPixmap(picture) # Позиция объекта QGraphicsPixmapItem image.setOffset(0, 0) # Добавление объекта QGraphicsPixmapItem на сцену self.scene.addItem(image) # ======= Начало изменений =========== # Создание объекта QGraphicsTextItem text = QGraphicsTextItem('Пример текста') # Задание шрифта и его параметров font = QFont('Courier New', pointSize=20, weight=900) # Добавление шрифта в объект текста text.setFont(font) # ======= Конец изменений ============= # Задание позиции текста text.setX(0) text.setY(200) # Добавление текста на сцену self.scene.addItem(text) App = QApplication(sys.argv) window = Window() window.show() # Демонстрация окна window.plot() # Построение и перерисовка окна sys.exit(App.exec())
Результат работы приложения изображен на рисунке 1.
Рис.1. Результат работы приложения
На следующем шаге мы рассмотрим группировку объектов.