[PyQt] segfault with multiple inheritance and QGraphicsItems

Phil Thompson phil at riverbankcomputing.com
Thu May 2 22:25:05 BST 2019


On 02/05/2019 19:07, Zach Pincus wrote:
> Thanks!
> 
> You're correct that the crash has nothing to do with the mixin: I
> thought I had tested that aspect carefully, but apparently not. (My
> apologies; it's a long story :) Furthermore, as you suggested,
> importing QtWidgets instead of Qt solves the problem.
> 
> ## THIS CRASHES ##
> from PyQt5 import Qt
> class MyItem(Qt.QGraphicsRectItem):
>     def itemChange(self, change, value):
>         return value
> myitem = MyItem()
> rect = Qt.QGraphicsRectItem(parent=myitem)
> 
> ## THIS DOES NOT CRASH ##
> from PyQt5 import QtWidgets
> class MyItem(QtWidgets.QGraphicsRectItem):
>     def itemChange(self, change, value):
>         return value
> myitem = MyItem()
> rect = QtWidgets.QGraphicsRectItem(parent=myitem)
> 
> Is there a way to work around this issue (other than not importing
> Qt)? I originally found this in a fairly large PyQt5 program that we
> wrote and use extensively in my lab, and for which not importing Qt
> would be a bit of a problem. Since the program is deployed on lots of
> machines in the lab, we rely on the PyPI PyQt5 packages. So if there's
> an easy workaround we'll use it; otherwise I'll disable the offending
> feature until the next release of PyQt5 hits PyPI.
> 
> Thanks a ton for checking this out!
> Zach

The only workaround I can think of is to remove the QtMultimediaWidgets 
module.

I wish I had never implemented the Qt module (it certainly won't be in 
PyQt6).

Phil


More information about the PyQt mailing list