PyQt: RuntimeError: wrapped C/C++ object has been deleted

Brain's answer explains the problem perfectly. This Link explain things in more detail.

My solution to this problem was to set the widgets as attributes of the object (e.g. simply using self.label = ... instead of label = ... in your class methods). You might want to do the same for any layouts attached to the widget.

This way you create a copy of the widget so that when C++ memory cleanup occurs, you still have a reference to the widget.

Hope this helps.


This answer to this question is as found here: Python PySide (Internal c++ Object Already Deleted)

Apparently, assigning one widget to QMainWindow using setCentralWidget and then assigning another widget with setCentralWidget will cause the underlying c++ QWidget to be deleted, even though I have an object that maintains reference to it.

Note: QMainWindow takes ownership of the widget pointer and deletes it at the appropriate time.