tools instalar example como python python-3.x pyqt pyqt5

python - instalar - Dibujando un polígono en PyQt



pyqt5 python windows (1)

No estoy seguro, a qué te refieres con

en la pantalla

puede usar QPainter, para pintar muchas formas en cualquier subclase de QPaintDevice, por ejemplo, QWidget y todas las subclases.

el mínimo es establecer un lápiz para líneas y texto y un pincel para rellenos. Luego crea un polígono, establece todos los puntos de polígono y pinta en 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_())

Fondo

Me gustaría dibujar una forma simple en la pantalla, y he seleccionado PyQt como el paquete para usar, ya que parece ser el más establecido. No estoy encerrado de ninguna manera.

Problema

Parece ser demasiado complicado dibujar una forma simple como, por ejemplo, un polígono en la pantalla. Todos los ejemplos que encuentro tratan de hacer muchas cosas adicionales y no estoy seguro de qué es realmente relevante.

Pregunta

¿Cuál es la forma mínima absoluta en PyQt de dibujar un polígono en la pantalla?

Uso la versión 5 de PyQt y la versión 3 de Python si hace alguna diferencia.