python - شرح - tkinter




هل يمكن الاستعلام عن PyQt4 كوبجيكت لتحديد ما إذا كان قد تم تدمير مثيل C++ الأساسي؟ (2)

يمكن المحاصرين إشارة () المدمرة ل كوبجيكت، ولكن أود ببساطة اختبار ما إذا كان الكائن بيثون لا يزال يشير كائن C ++ كت صالح. هل هناك طريقة للقيام بذلك مباشرة؟


يمكنك استخدام فئة ويكريف في مكتبة بيثون القياسية. وسوف تبدو شيئا مثل:

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

إذا قمت باستيراد وحدة رشفة يمكنك استدعاء الدالة .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






pyqt4