Рисование многоугольников с помощью pyqt5Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Рисование многоугольников с помощью pyqt5

Сообщение Anonymous »

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

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

А вот и мой код:
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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Рисование многоугольников с помощью pyqt5
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Рисование многоугольников на большом микроскопическом изображении с помощью Scikit-Image
    Anonymous » » в форуме Python
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Рисование текста в центре растрового изображения с помощью QPainter из PyQt5 [дубликат]
    Anonymous » » в форуме Python
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Ошибка при установке pyqt5 (pip install pyqt5)
    Anonymous » » в форуме Python
    0 Ответы
    46 Просмотры
    Последнее сообщение Anonymous
  • Ошибка при установке pyqt5 (pip install pyqt5)
    Anonymous » » в форуме Python
    0 Ответы
    109 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»