help on paint event

Valentin Valls valentin.valls at esrf.fr
Thu Oct 29 18:28:22 GMT 2020


Hi, 

Did you try to use QPainter(self)? 

I have noticed you have commented painter.begin. 

Here you have 2 examples on how to use it with paintEvent
https://doc.qt.io/qt-5/qpainter.html#QPainter-1

Regards, 

On 29.10.2020 18:01, Luca Bertolotti wrote:

> Hello i'm not able to paint on my widget: 
> i wrote this but nothing is painted: 
> # -*- coding: utf-8 -*-
> 
> """
> Module implementing Form.
> """
> 
> from PyQt5.QtCore import pyqtSlot, QRect
> from PyQt5.QtWidgets import QWidget, QFileDialog
> from PyQt5.QtGui import QPainter, QBrush, QPen
> from PyQt5.QtCore import Qt
> import ezdxf
> #from ezdxf.addons.drawing import matplotlib
> #from ezdxf.groupby import groupby
> import math
> 
> from Ui_form import Ui_Form
> 
> class Form(QWidget, Ui_Form):
> """
> Class documentation goes here.
> """
> def __init__(self, parent=None):
> """
> Constructor
> 
> @param parent reference to the parent widget
> @type QWidget
> """
> super(Form, self).__init__(parent)
> self.setupUi(self)
> self.arco = False
> self.line = False
> 
> @pyqtSlot()
> def on_pushButton_clicked(self):
> """
> Slot documentation goes here.
> """
> # TODO: not implemented yet
> #raise NotImplementedError
> self.carico_file()
> 
> @pyqtSlot()
> def on_pushButton_2_clicked(self):
> """
> Slot documentation goes here.
> """
> # TODO: not implemented yet
> raise NotImplementedError
> 
> def carico_file(self):
> fname = QFileDialog.getOpenFileName(self, 'Open file', None, ("Drawing (*.dxf )"))
> doc = ezdxf.readfile(fname[0])
> msp = doc.modelspace()
> lista_disegno = []
> a = 0
> for entity in msp:
> self.arco = False
> self.linea =False
> print(entity.dxfattribs())
> if entity.dxftype() == 'LINE':
> linea_x = entity.dxf.end[0]-entity.dxf.start[0]
> linea_y = entity.dxf.end[1]-entity.dxf.start[1]
> lista_disegno.append('linea_x'+str(a)+': '+str(linea_x))
> lista_disegno.append('linea_y'+str(a)+': '+str(linea_y))
> self.x1 = entity.dxf.start[0]
> self.y1 = entity.dxf.start[1]
> self.x2 = entity.dxf.end[0]
> self.y2 = entity.dxf.end[1]
> print('linea', self.x1, self.y1, self.x2, self.y2)
> a = a+1
> self.linea = True
> self.update()
> if entity.dxftype()=='ARC':
> angolo_tot_gradi = entity.dxf.end_angle-entity.dxf.start_angle
> lung_arco= 2*math.pi*entity.dxf.radius/360*angolo_tot_gradi
> lista_disegno.append('arco'+str(a)+': '+str(lung_arco))
> self.startangle = entity.dxf.start_angle
> self.spanangle = lung_arco
> xr = entity.dxf.center[0]
> yr = entity.dxf.center[1]
> r = entity.dxf.radius
> self.rectangle = QRect(xr, yr, 2*r, 2*r)
> self.arco = True
> #self.update()
> #self.draw_arc(rectangle, startangle, spanangle)
> print(lista_disegno)
> self.update()
> 
> def paintEvent(self, event):
> if self.arco == True:
> qp = QPainter()
> #qp.begin(self)
> pen = QPen(Qt.red, 2, Qt.SolidLine)
> qp.setPen(pen)
> qp.drawArc(self.rectangle, self.startangle, self.spanangle)
> if self.line == True:
> qp = QPainter()
> pen = QPen(Qt.red, 2, Qt.SolidLine)
> qp.setPen(pen)
> qp.drawLine(self.x1, self.y1, self.x2, self.y2)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20201029/5d30ac71/attachment-0001.htm>


More information about the PyQt mailing list