PyQt5 - API рисования

Все QWidgetклассы в PyQt являются подклассами класса QPaintDevice. АQPaintDeviceпредставляет собой абстракцию двухмерного пространства, которое можно нарисовать с помощью QPainter. Размеры устройства рисования измеряются в пикселях, начиная с левого верхнего угла.

QPainterкласс выполняет низкоуровневую отрисовку виджетов и других раскрашиваемых устройств, таких как принтер. Обычно он используется в событии рисования виджета. ВQPaintEvent происходит всякий раз, когда обновляется внешний вид виджета.

Художник активируется вызовом begin() метод, в то время как end()метод деактивирует его. Между ними желаемый узор наносится подходящими методами, указанными в следующей таблице.

Sr. No. Методы и описание
1

begin()

Начинает рисование на целевом устройстве

2

drawArc()

Рисует дугу между начальным и конечным углом

3

drawEllipse()

Рисует эллипс внутри прямоугольника

4

drawLine()

Рисует линию с указанными координатами конечной точки

5

drawPixmap()

Извлекает растровое изображение из файла изображения и отображает его в указанной позиции

6

drwaPolygon()

Рисует многоугольник с использованием массива координат

7

drawRect()

Рисует прямоугольник, начиная с верхней левой координаты, с заданной шириной и высотой.

8

drawText()

Отображает текст в заданных координатах

9

fillRect()

Заполняет прямоугольник параметром QColor

10

setBrush()

Устанавливает стиль кисти для рисования

11

setPen()

Устанавливает цвет, размер и стиль пера, который будет использоваться для рисования

пример

В следующем коде используются различные методы рисования PyQt.

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class Example(QWidget):
   def __init__(self):
      super(Example, self).__init__()
      self.initUI()

   def initUI(self):
      self.text = "hello world"
      self.setGeometry(100,100, 400,300)
      self.setWindowTitle('Draw Demo')
      self.show()

   def paintEvent(self, event):
      qp = QPainter()
      qp.begin(self)
      qp.setPen(QColor(Qt.red))
      qp.setFont(QFont('Arial', 20))
      qp.drawText(10,50, "hello Python")
      qp.setPen(QColor(Qt.blue))
      qp.drawLine(10,100,100,100)
      qp.drawRect(10,150,150,100)
      qp.setPen(QColor(Qt.yellow))
      qp.drawEllipse(100,50,100,50)
      qp.drawPixmap(220,10,QPixmap("pythonlogo.png"))
      qp.fillRect(20,175,130,70,QBrush(Qt.SolidPattern))
      qp.end()

def main():
   app = QApplication(sys.argv)
   ex = Example()
   sys.exit(app.exec_())

if __name__ == '__main__':
   main()

Приведенный выше код дает следующий вывод -