[PyQt] QGraphicsScene problem

Phil Thompson phil at riverbankcomputing.co.uk
Mon Jul 2 09:29:49 BST 2007


On Monday 02 July 2007 6:01 am, Andrew Magee wrote:
> Hello all.  I've been playing around with pyqt 4 for a while but I've
> run into a problem retrieving items from a QGraphicsScene's items
> collection; the items returned seem to be garbage and cause the python
> interpreter to segfault when I try to execute methods from them.
>
> I can't seem to find any workaround that will let me find out what
> item in the scene was clicked from a mouse event - does anyone have
> any ideas about that?
>
> Here's the simplest program I could come up with to reproduce the
> problem.  I'm guessing this is a bug in pyqt but I don't really know
> much about it.
>
> Thanks.
>
> ------
>
> import sys
> from PyQt4 import QtCore, QtGui
>
> class CalendarScene(QtGui.QGraphicsScene):
>   def __init__(self, parent = None):
>     QtGui.QGraphicsScene.__init__(self, parent)
>
>     a = QtGui.QGraphicsTextItem()
>     a.setPlainText('a')
>     a.setPos(0, 0)
>     self.addItem(a)
>
>     b = QtGui.QGraphicsTextItem()
>     b.setPlainText('b')
>     b.setPos(50, 0)
>     self.addItem(b)
>
>     # prints <class 'PyQt4.QtGui.QGraphicsTextItem'> as expected
>     print self.items()[0].__class__
>
>     # segfaults
>     print self.items()[0].toPlainText()
>
> if __name__ == "__main__":
>   app = QtGui.QApplication(sys.argv)
>   window = QtGui.QGraphicsView()
>   scene = CalendarScene()
>   window.setScene(scene)
>   window.show()
>   sys.exit(app.exec_())
>
> ------

Works fine for me.

Phil


More information about the PyQt mailing list