Программа должна определять, закрыта ли фигура, а затем автоматически заполнять ее. область внутри него определенного цвета (например, красного в этом коде)
Проблема: мне нужно добавить модификацию, если внутри нарисована еще одна линия этот многоугольник и делит многоугольник на несколько частей, цвет внутри этой созданной зоны можно изменить на что-то другое (например, на синий по умолчанию), но также можно редактировать (щелкнув правой кнопкой мыши), чтобы изменить дополнительные параметры цвета и, наконец, получить эффект наведения при наведении на них мыши, поскольку пользователь может почувствовать, что многоугольник разделен на разные зоны
Ниже я приведу пример, чтобы вы лучше поняли, что я имею в виду, вместе с кодом.
Сначала мы создаем простой многоугольник :

Затем пытаемся разделить его на разные зоны:

А вот и мой код:
import sys
from PyQt5.QtWidgets import QApplication, QGraphicsView, QGraphicsScene, QGraphicsLineItem, QMenu
from PyQt5.QtCore import Qt, QPointF,QLineF
from PyQt5.QtGui import QPainter, QPen, QBrush, QColor , QPolygonF
class UserLineItem(QGraphicsLineItem):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setPen(QPen(Qt.black, 5))
def p1(self):
return self.line().p1()
def p2(self):
return self.line().p2()
def setP1(self, p):
line = self.line()
if line.p1() != p:
line.setP1(p)
self.setLine(line)
def setP2(self, p):
line = self.line()
if line.p2() != p:
line.setP2(p)
self.setLine(line)
class MeasuredGraphicsView(QGraphicsView):
gridSpacing = 25
def __init__(self):
super().__init__()
self.setRenderHint(QPainter.Antialiasing)
self.resize(800, 600)
self.scene = QGraphicsScene(self)
self.setScene(self.scene)
self.scene.setSceneRect(-500, -500, 1000, 1000)
self.currentLine = None
self.vertexLines = {}
def drawBackground(self, qp, rect):
normal = QPen(Qt.lightGray, 1, Qt.DotLine)
dark = QPen(Qt.black, 1, Qt.DotLine)
rect &= self.scene.sceneRect()
left, top, right, bottom = rect.getCoords()
qp.save()
x = left // self.gridSpacing * self.gridSpacing
while x
Подробнее здесь: https://stackoverflow.com/questions/792 ... sing-pyqt5