[PyQt] Slot connections fail with newest snapshot

Phil Thompson phil at riverbankcomputing.com
Sun Jul 17 12:57:24 BST 2016


On 17 Jul 2016, at 11:09 am, Florian Bruhin <me at the-compiler.org> wrote:
> 
> * Phil Thompson <phil at riverbankcomputing.com> [2016-07-16 17:10:55 +0100]:
>> On 14 Jul 2016, at 10:32 am, Florian Bruhin <me at the-compiler.org> wrote:
>>> 
>>> Hi,
>>> 
>>> I just tried PyQt5_gpl-5.7.dev1607121154 and sip-4.18.1.dev1607032332
>>> (with a debug Python build FWIW), and with the attached code I get:
>>> 
>>>   QObject::connect: Cannot connect QCoreApplication::aboutToQuit() to (null)::lot()
>>>   Traceback (most recent call last):
>>>     File "foo.py", line 13, in <module>
>>>       app.aboutToQuit.connect(obj.slot)
>>>   TypeError: connect() failed between aboutToQuit() and lot()
>>> 
>>> It looks like there's a off-by-one error somewhere, as the method is
>>> called "slot", not "lot"?
>>> 
>>> I noticed it doesn't happen without @pyqtSlot, and it also doesn't
>>> happen with a function instead of a method.
>> 
>> The current behaviour is different, but what are you expecting to
>> happen (given your class does not inherit from QObject)?
> 
> Oh, @pyqtSlot only works on classes inheriting from QObject? While
> that makes some sense, that's news for me!
> 
> I think either it should just be ignored (like before?), or show some
> useful error message like "pyqtSlot can only be used on classes
> inheriting from QObject" or so. I also think this should be pointed
> out in the docs for @pyqtSlot - while the examples do inherit from
> QObject, it's not explicitly documented anywhere I think.

You can use it in classes that are used as mixins with QObject derived classes.

Phil


More information about the PyQt mailing list