signal custom python qt pyqt pyqt4

python - custom - ¿Se puede consultar un PyQt4 QObject para determinar si la instancia subyacente de C++ se ha destruido?



pyqt download (2)

La señal destruida () puede quedar atrapada en un objeto QObject, pero me gustaría simplemente probar si el objeto Python aún hace referencia a un objeto C ++ Qt válido. ¿Hay algún método para hacerlo directamente?


Puede usar la clase WeakRef en la biblioteca estándar de Python. Se vería algo así como:

import weakref q = QObject() w = weakref.ref(q) if w() is not None: # Remember the parentheses! print(''The QObject is still alive.'') else: print(''Looks like the QObject died.'')


Si importa el módulo sip, puede llamar a su función .isdeleted.

import sip from PyQt4.QtCore import QObject q = QObject() sip.isdeleted(q) False sip.delete(q) q <PyQt4.QtCore.QObject object at 0x017CCA98> q.isdeleted(q) Traceback (most recent call last): File "<stdin>", line 1, in <module> RuntimeError: underlying C/C++ object has been deleted