Stack Overflow en español es un sitio de preguntas y respuestas para programadores y profesionales de la informática. Solo te toma un minuto registrarte.
Regístrate para unirte a esta comunidad
Estaba realizando una practica de dibujo con polygonos en pyqt5 pero me lanza el siguiente error:
QPainter::setPen: Painter not active
QPainter::setBrush: Painter not active
Este es el codigo:
from PyQt5.QtWidgets import QMainWindow,QApplication
from PyQt5.QtGui import QPolygon,QPainter,QPen,QBrush
from PyQt5.QtCore import QPoint,Qt
from PyQt5 import uic
class Main(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
def paintEvent(self,event):
painter = QPainter()
painter.setPen(QPen(Qt.black,5,Qt.SolidLine))
painter.setBrush(QBrush(Qt.green,Qt.SolidPattern))
points = [
QPoint(10,10),
QPoint(10,100),
QPoint(100,10),
QPoint(100,100)
poly = QPolygon(points)
painter.drawPolygon(poly)
app = QApplication([])
m = Main()
m.show()
app.exec_()
No muestra ningun tipo de dibujo, solo esta la ventana en blanco y cada que cambia el tamaño de la ventana se muestra el error otra vez.
Espero puedan ayudarme
QPainter sirve para pintar sobre un QPaintDevice como en este caso es el QMainWindow, pero tu no le has indicado donde pintar, y ante ello Qt te avisa de tu error. La solucion es pasarle a la ventana en el constructor:
# ...
def paintEvent(self,event):
painter = QPainter(self)
# ...
O usar el método begin():
# ...
def paintEvent(self,event):
painter = QPainter()
painter.begin(self)
# ...
¡Gracias por contribuir en StackOverflow en español con una respuesta!
- Por favor, asegúrate de responder a la pregunta. ¡Proporciona información y comparte tu investigación!
Pero evita…
- Pedir ayuda o aclaraciones, o responder a otras respuestas.
- Hacer declaraciones basadas en opiniones; asegúrate de respaldarlas con referencias o con tu propia experiencia personal.
Para obtener más información, consulta nuestros consejos sobre cómo escribir grandes respuestas.