import sys
from PyQt6.QtWidgets import QApplication, QWidget
from PyQt6.QtGui import QPainter, QPen, QBrush, QColor
from PyQt6.QtCore import Qt
class DrawingWidget(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('Рисование в PyQt6')
self.resize(400, 300)
# Переопределяем событие отрисовки
def paintEvent(self, event):
# Создаем объект рисовальщика. Передаем self, чтобы рисовать на этом виджете
painter = QPainter(self)
# Включаем антиалиасинг (сглаживание углов)
painter.setRenderHint(QPainter.RenderHint.Antialiasing)
# 1. Рисуем текст
painter.setPen(QColor(0, 0, 0)) # Черный цвет пена (контура)
painter.drawText(20, 30, "Привет из paintEvent!")
# 2. Настраиваем перо (перо отвечает за линии и контуры)
pen = QPen(QColor(255, 0, 0), 3, Qt.PenStyle.SolidLine) # Красный цвет, толщина 3
painter.setPen(pen)
# Рисуем линию (x1, y1, x2, y2)
painter.drawLine(20, 50, 200, 50)
# 3. Настраиваем кисть (кисть отвечает за заливку фигур)
brush = QBrush(QColor(0, 255, 0, 100), Qt.BrushStyle.SolidPattern) # Зеленый цвет с прозрачностью 100
painter.setBrush(brush)
# Синее перо для контура прямоугольника
painter.setPen(QPen(QColor(0, 0, 255), 2))
# Рисуем прямоугольник (x, y, width, height)
painter.drawRect(20, 80, 150, 80)
# 4. Рисуем круг (эллипс)
painter.setBrush(QBrush(QColor(255, 255, 0), Qt.BrushStyle.SolidPattern)) # Желтая заливка
painter.setPen(Qt.PenStyle.NoPen) # Без контура
# Рисуем эллипс (x, y, width, height). Если width == height, получится круг
painter.drawEllipse(220, 80, 100, 100)
# Обязательно завершаем работу рисовальщика (хотя в Python это часто происходит автоматически при выходе из метода)
painter.end()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = DrawingWidget()
window.show()
sys.argv[0] = "paint_example"
sys.exit(app.exec())