Шаг 226.
Библиотека PyQt5.
Графическая сцена. Форматированный текст

    На этом шаге мы рассмотрим вывод в окно форматированного текста.

    Класс 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. Результат работы приложения

    На следующем шаге мы рассмотрим группировку объектов.




Предыдущий шаг Содержание Следующий шаг