<div dir="ltr"><div><div><font face="monospace" size="1">from PyQt5.QtCore import QObject, pyqtSlot, Qt, pyqtSignal</font></div><div><font face="monospace" size="1"><br></font></div><div><font face="monospace" size="1">class MyObj(QObject):</font></div><div><font face="monospace" size="1">    sig_test = pyqtSignal()</font></div><div><font face="monospace" size="1"><br></font></div><div><font face="monospace" size="1">class Listener(QObject):</font></div><div><font face="monospace" size="1">    @pyqtSlot()</font></div><div><font face="monospace" size="1">    def meth(self):</font></div><div><font face="monospace" size="1">        pass</font></div><div><font face="monospace" size="1"><br></font></div><div><font face="monospace" size="1">    # @pyqtSlot()</font></div><div><font face="monospace" size="1">    def meth2(self):</font></div><div><font face="monospace" size="1">        pass</font></div><div><font face="monospace" size="1"><br></font></div><div><font face="monospace" size="1">obj = MyObj()</font></div><div><font face="monospace" size="1">obs = Listener()</font></div><div><font face="monospace" size="1"><br></font></div><div><font face="monospace" size="1">def test_no_connections(slot):</font></div><div><font face="monospace" size="1">    assert obj.receivers(obj.sig_test) == 0</font></div><div><font face="monospace" size="1"><br></font></div><div><font face="monospace" size="1">    obj.sig_test.connect(slot, Qt.UniqueConnection)</font></div><div><font face="monospace" size="1">    assert obj.receivers(obj.sig_test) == 1</font></div><div><font face="monospace" size="1"><br></font></div><div><font face="monospace" size="1">    obj.sig_test.disconnect(slot)</font></div><div><font face="monospace" size="1">    assert obj.receivers(obj.sig_test) == 0</font></div><div><font face="monospace" size="1"><br></font></div><div><font face="monospace" size="1">test_no_connections(obs.meth)</font></div><div><font face="monospace" size="1">test_no_connections(obs.meth)</font></div><div><font face="monospace" size="1"><br></font></div><div><font face="monospace" size="1">test_no_connections(obs.meth2)</font></div><div><font face="monospace" size="1">test_no_connections(obs.meth2)  # FAILS </font></div><div style="font-size:13px"><br></div><div>Last line fails because meth2 was not decorated with pyqtSlot. Is this expected or a bug? </div><div><br></div><div>Related to this, the exception on a unique connection is completely different if the method is decorated. Using the same code as above (but without the test_no_connections stuff): </div></div><div><br></div><div><div><font face="monospace" size="1">def test_unique_connection(slot, str_exc):</font></div><div><font face="monospace" size="1">    obj.sig_test.connect(slot, Qt.UniqueConnection)</font></div><div><font face="monospace" size="1">    try:</font></div><div><font face="monospace" size="1">        obj.sig_test.connect(slot, Qt.UniqueConnection)</font></div><div><font face="monospace" size="1">    except TypeError as exc:</font></div><div><font face="monospace" size="1">        assert str(exc) == str_exc</font></div><div><font face="monospace" size="1"><br></font></div><div><font face="monospace" size="1">test_unique_connection(obs.meth, 'connect() failed between MyObj.sig_test[] and meth()')</font></div><div><font face="monospace" size="1">test_unique_connection(obs.meth2, 'connection is not unique')</font></div></div><div><br></div><div>Shouldn't both produce an exception that says 'connection is not unique'?</div></div><div dir="ltr">-- <br></div><div data-smartmail="gmail_signature"><div dir="ltr">Oliver<div>My StackOverflow contributions<br><div>My CodeProject articles</div></div><div>My Github projects</div><div>My SourceForget.net projects</div></div></div>