python help Disegnare un poligono in PyQt



pyqt5 quick start (1)

non sono sicuro, con cosa intendi

sullo schermo

puoi usare QPainter per dipingere un sacco di forme su qualsiasi sottoclasse di QPaintDevice, ad es. QWidget e tutte le sottoclassi.

il minimo è impostare una penna per linee e testo e un pennello per riempimenti. Quindi crea un poligono, imposta tutti i punti di poligono e vernice in paintEvent() :

import sys, math
from PyQt5 import QtCore, QtGui, QtWidgets

class MyWidget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)
        self.pen = QtGui.QPen(QtGui.QColor(0,0,0))                      # set lineColor
        self.pen.setWidth(3)                                            # set lineWidth
        self.brush = QtGui.QBrush(QtGui.QColor(255,255,255,255))        # set fillColor  
        self.polygon = self.createPoly(8,150,0)                         # polygon with n points, radius, angle of the first point

    def createPoly(self, n, r, s):
        polygon = QtGui.QPolygonF() 
        w = 360/n                                                       # angle per step
        for i in range(n):                                              # add the points of polygon
            t = w*i + s
            x = r*math.cos(math.radians(t))
            y = r*math.sin(math.radians(t))
            polygon.append(QtCore.QPointF(self.width()/2 +x, self.height()/2 + y))  

        return polygon

    def paintEvent(self, event):
        painter = QtGui.QPainter(self)
        painter.setPen(self.pen)
        painter.setBrush(self.brush)  
        painter.drawPolygon(self.polygon)

app = QtWidgets.QApplication(sys.argv) 

widget = MyWidget()
widget.show()

sys.exit(app.exec_())

sfondo

Mi piacerebbe disegnare una forma semplice sullo schermo, e ho selezionato PyQt come pacchetto da usare, poiché sembra essere il più consolidato. Non sono bloccato ad esso in alcun modo.

Problema

Sembra essere troppo complicato disegnare una semplice forma come ad esempio un poligono sullo schermo. Tutti gli esempi che trovo cercano di fare molte cose extra e non sono sicuro di ciò che è effettivamente rilevante.

Domanda

Qual è il modo assolutamente minimo in PyQt per disegnare un poligono sullo schermo?

Io uso la versione 5 di PyQt e la versione 3 di Python se fa alcuna differenza.





pyqt5