[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pykde
Subject:    Re: [PyQt] No output from QSvgGenerator
From:       David Boddie <dboddie () trolltech ! com>
Date:       2008-05-27 17:00:02
Message-ID: 200805271900.02109.dboddie () trolltech ! com
[Download RAW message or body]

On Tue May 27 17:00:23 BST 2008, Luke Campagnola wrote:

> class GraphicsView(QtGui.QGraphicsView):
> 
>   [ ... ]
> 
>   def writeSvg(self, fileName):
>       self.svg = QtSvg.QSvgGenerator()
>       self.svg.setFileName(fileName)
>       self.svg.setSize(self.size())
>       self.svg.setResolution(600)
>       self.painter = QtGui.QPainter(self.svg)
>       self.render(self.painter)
> 
> When I run writeSvg(), an empty file is created. If I try to run the
> function again, it complains that paint devices can not be deleted
> while being painted on.

You need to "close" the painter, either by making "painter" a local
variable or by wrapping render() in calls to the painter's begin()
and end() methods.

Either

      [ ... ]
      painter = QtGui.QPainter(self.svg)
      self.render(self.painter)

or

      [ ... ]
      self.painter = QtGui.QPainter()
      self.painter.begin(self.svg)
      self.render(self.painter)
      self.painter.end()

Since you probably don't need to make "painter" an instance variable, the
first option is probably the way to go.

David
-- 
David Boddie
Lead Technical Writer, Trolltech ASA
_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic