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