Details
-
Bug
-
Resolution: Done
-
P3: Somewhat important
-
6.2.3
-
None
-
Windows Version: 10.0.19042 Build 19042
PySide6 version: 6.2.3
Python version: 3.8.7
-
-
e5d50b1e9f (pyside/pyside-setup/dev) 216a5c1054 (pyside/pyside-setup/6.3) 216a5c1054 (pyside/tqtc-pyside-setup/6.3) e5d50b1e9f (pyside/tqtc-pyside-setup/dev) 8ffb90ebee (pyside/tqtc-pyside-setup/5.15) 261e65ba52 (pyside/tqtc-pyside-setup/6.2)
Description
Run the following code, clicking the button three times:
from PySide6 import QtWidgets, QtUiTools def make2(): x = QtWidgets.QPushButton("Switch back", w) x.clicked.connect(lambda: w.setCentralWidget(make1())) x.nativeParentWidget() # No error if this line is commented out return x def make1(): loader = QtUiTools.QUiLoader() inner = loader.load("dbg.ui", w) switchButton = inner.findChild(QtWidgets.QPushButton, "switchButton") switchButton.clicked.connect( lambda: print(switchButton) or w.setCentralWidget(make2()) ) return inner app = QtWidgets.QApplication() w = QtWidgets.QMainWindow() w.setCentralWidget(make1()) w.show() app.exec_()
The output for me is:
qt.pysideplugin: Environment variable PYSIDE_DESIGNER_PLUGINS is not set, bailing out. qt.pysideplugin: No instance of QPyDesignerCustomWidgetCollection was found. Qt WebEngine seems to be initialized from a plugin. Please set Qt::AA_ShareOpenGLContexts using QCoreApplication::setAttribute and QSGRendererInterface::OpenGLRhi using QQuickWindow::setGraphicsApi before constructing QGuiApplication. c:/Users/matthew.joyce/Repos/lw8/dbg_deleted_qobjects.py:25: DeprecationWarning: 'exec_' will be removed in the future. Use 'exec' instead. app.exec_() <PySide6.QtWidgets.QPushButton(0x25e7e7b41d0, name="switchButton") at 0x0000025E7FA20640> qt.pysideplugin: No instance of QPyDesignerCustomWidgetCollection was found. Traceback (most recent call last): File "c:/Users/matthew.joyce/Repos/lw8/dbg_deleted_qobjects.py", line 16, in <lambda> lambda: print(switchButton) or w.setCentralWidget(make2()) RuntimeError: Internal C++ object (PySide6.QtWidgets.QPushButton) already deleted.
Commenting out the line calling nativeParentWidget fixes the problem, as does not using the QUiLoader. UI file is (to be saved as "dbg.ui"):
<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>Widget</class> <widget class="QWidget" name="Widget"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>93</width> <height>41</height> </rect> </property> <layout class="QHBoxLayout" name="horizontalLayout"> <item> <widget class="QPushButton" name="switchButton"> <property name="text"> <string>Switch</string> </property> </widget> </item> </layout> </widget> <resources/> <connections/> </ui>