[PyQt] can't create a QPainter in QTreeWidget's paintEvent

Devon devon.rueckner at temboo.com
Thu Aug 23 16:04:19 BST 2007


> If you pass a device (self in this case) when you create a QPainter, don't
> call its begin() or end() methods. I think its the end() call that actually
> triggers this message in this case.


I'm not explicitly calling begin() - I believe that's happening in
QPainter(self).  painter.end() is not the root cause.

this script produces the issue if anyone wants to try it:

-------------------------
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class MyTreeWidget(QTreeWidget):
    def __init__(self, parent=None):
        QTreeWidget.__init__(self, parent)
    def paintEvent(self, e):
        QTreeWidget.paintEvent(self, e)
        painter = QPainter(self)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    tree = MyTreeWidget()
    tree.show()
    sys.exit(app.exec_())
-------------------------

Outputs:
QPainter::begin: Widget painting can only begin as a result of a paintEvent


More information about the PyQt mailing list