Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以查询PyQt4 QObject以确定基础C++;实例已被销毁? 这个信号可以被捕获为QObjor,但我想简单地测试Python对象是否仍然引用一个有效的C++ QT对象。是否有直接执行此操作的方法?_Python_Qt_Pyqt_Pyqt4 - Fatal编程技术网

是否可以查询PyQt4 QObject以确定基础C++;实例已被销毁? 这个信号可以被捕获为QObjor,但我想简单地测试Python对象是否仍然引用一个有效的C++ QT对象。是否有直接执行此操作的方法?

是否可以查询PyQt4 QObject以确定基础C++;实例已被销毁? 这个信号可以被捕获为QObjor,但我想简单地测试Python对象是否仍然引用一个有效的C++ QT对象。是否有直接执行此操作的方法?,python,qt,pyqt,pyqt4,Python,Qt,Pyqt,Pyqt4,您可以使用Python标准库中的类。它看起来像: 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.') 如果导入sip模块,则可以调用其.isdeleted函数 import s

您可以使用Python标准库中的类。它看起来像:

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.')

如果导入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
导入sip
从PyQt4.QtCore导入QObject
q=QObject()
sip.isdeleted(q)
假的
sip.删除(q)
Q
q、 isdeleted(q)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
运行时错误:已删除基础C/C++对象

问题在于Qt对象,而不是Python对象。即使这仅仅是一个偶然的机会,但这不是解决问题的方法。拉什:他问:“我想简单地测试一下Python引用是否仍然有效。”。这就是它的作用。对不起,这句话不清楚。我问的是底层C++对象。我将解决这个问题。在C++ Qt中,没有比捕获<代码>销毁()/<代码>信号更容易的可能性,所以我怀疑这是可能的。如果没有SIP(SHIBONKEN),我发现从PyQt导入SIP在某些情况下会更好。按照PyQt5导入sip中的
完成。