是否可以查询PyQt4 QObject以确定底层C++实例是否已被销毁?

Jud*_*den 7 python qt pyqt pyqt4

销毁()信号可以被困一个QObject,但我想简单的测试,如果Python对象仍然引用了有效的C++的Qt对象.有没有直接这样做的方法?

Gar*_*hes 15

如果导入sip模块,则可以调用其.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
Run Code Online (Sandbox Code Playgroud)