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()
Приведенный выше код дает следующий вывод -