<div dir="ltr"><div>As mentioned here, <a href="http://www.riverbankcomputing.com/pipermail/pyqt/2011-October/030578.html">http://www.riverbankcomputing.com/pipermail/pyqt/2011-October/030578.html</a>, you cannot use the 'disconnect' method to disconnect something when the signals were connected via the emit() method.</div>
<div><br></div><div>I'm curious about the details of why connecting signals to the emit() method does not work.  I've tried to do some debugging myself, but I'm still a bit confused.</div><div><br></div><div>It looks as though the pyqtSignal object **changes** during the course of a running application.  For example, consider the following line:</div>
<div><br></div><div>ok.pressed.connect(cancel.pressed.emit)</div><div><br></div><div>As previously mentioned doing a disconnect like the following doesn't work:</div><div><br></div><div>ok.pressed.disconnect(cancel.pressed.emit)</div>
<div><br></div><div>I've tried debugging by printing the id() of the cancel.pressed object (pyqtSignal) as well as the id() of the cancel.pressed.emit method.  These object ids actually **change** between when I connect and later try to disconnect.</div>
<div><br></div><div>I've verified that I'm not deleting the objects, etc.  Also, calling cancel.pressed.emit() works as you can imagine even though it's seemingly a different object than the one that was connected earlier.  What exactly is happening here?</div>
<div><br></div><div>I'm assuming it has something to do with the wrapping of the C++ code and maybe the QMetaObject (<a href="http://qt-project.org/doc/qt-4.8/qmetaobject.html">http://qt-project.org/doc/qt-4.8/qmetaobject.html</a>) is involved somehow.</div>
<div><br></div><div>I'm really just trying to understand why these ids don't match up and why connecting signals to signals is preferred vs. connecting to the emit method.  I can easily change my code to connect the signals via the preferred method, but I felt like there was a useful lesson to learn here.  Thoughts?</div>
</div>