[PyQt] Note about setting setting painters with gradients instead of brushes

Jeff Donner jeffrey.donner at gmail.com
Mon Sep 3 05:25:27 BST 2007


 I just wanted to save someone else some time - in Qt's C++ gradient
demo, they set a QPainter directly with one of their gradients (as the
docs show as permitted), but that doesn't seem to work in PyQt:

           g = QtGui.QRadialGradient(midpoint.x, midpoint.y, self.blob_radius)

           opaque      = QtGui.QColor(value, 0.0, 0.0, 1.0)
           transparent = QtGui.QColor(value, 0.0, 0.0, 0.0)

           g.setColorAt(0.0, opaque)
           g.setColorAt(1.0, transparent)


#            b = QtGui.QBrush(g)


Produces the error:

TypeError: argument 1 of QPainter.setBrush() has an invalid type

instead, do an extra step of making a brush with the gradient

 b = QtGui.QBrush(g)

and then set the brush.


I hope this saves someone time.

More information about the PyQt mailing list