[PyQt] QPainter
    David Boddie 
    david at boddie.org.uk
       
    Fri Jun 22 14:38:20 BST 2007
    
    
  
On Fri Jun 22 07:54:17 BST 2007, lucaberto wrote:
> Hello again here's my code but nothing is draw.
> 
>  def on_pushButton_5_clicked(self):
>         re = QtCore.QRect(69, 59, 781, 431)
>         QtGui.QPaintEvent.__init__(re)
>         event = QtGui.QPaintEvent(re)
>         self.paintEvent(event)
>
> def paintEvent(self, event):
>         gr = QtGui.QPainter(self.frame1)
>         gr.setPen(QtGui.QPen(QtCore.Qt.black, 1, QtCore.Qt.SolidLine))
>         gr.drawLine(70,60,740,60)
>         gr.drawLine(70,60, 70, 400)
>         gr.drawLine(70, 230,740, 230)
>         self.frame1.update()
Maybe I wasn't quite clear enough. :-/
You need to subclass QFrame and reimplement its paintEvent() method, not the
paintEvent() method of its parent widget. The subclass could look like this:
class PictureFrame(QFrame):
  def __init__(self, parent = None):
    QFrame.__init__(self, parent)
    self.picture = QPicture()
  def paintEvent(self, event):
    p = QPainter(self)
    p.drawPicture(0, 0, self.picture)
Now, instead of making frame1 a QFrame instance, you could use a PictureFrame
instance and, in your on_pushButton_5_clicked() method, do this instead:
  def on_pushButton_5_clicked(self):
    gr = QPainter(self.frame1.picture)
    gr.setPen(QtGui.QPen(QtCore.Qt.black, 1, QtCore.Qt.SolidLine))
    gr.drawLine(70,60,740,60)
    gr.drawLine(70,60, 70, 400)
    gr.drawLine(70, 230,740, 230)
    self.frame1.update()
David
    
    
More information about the PyQt
mailing list