[PyKDE] Python functions as slots

Hans-Peter Jansen hpj at urpla.net
Mon Sep 30 21:54:00 BST 2002


Hi Konrad,

On Monday 30 September 2002 20:50, Konrad Hinsen wrote:
> I have lots of problems using Python functions as slots. As a simple
> illustration, take the following code (an example from Boudewijn Rempt's
> excellent book with an added connect):
>
>    import sys
>    from qt import *
>
>    def foo(*args):
>        print args
>
>    app=QApplication(sys.argv)
>    button=QPushButton("Hello World", None)
>    app.setMainWidget(button)
>    button.show()
>    app.connect(button, SIGNAL("clicked()"), app, foo)
>    app.exec_loop()

This is apparently wrong. Remove app arg from app.connect and 
all goes well. BTW: signal clicked does not take any arguments. 
If you want to pass some custom arguments with signals, roll 
your own (signals).

> When I run this code, I get:
>
>    Traceback (most recent call last):
>      File "hello1.py", line 14, in ?
>        app.connect(button, SIGNAL("clicked()"), app, foo)
>    TypeError: Argument 4 of QObject.connect() has an invalid type
>
> This doesn't always happen. For example, I can run the example
> "dial.py" from the same book without problems, although it uses Python
> methods as slots.
>
> In case it matters, I use PyQt 3.4 and Qt 2.3.1.
>
> Any idea what is happening here?
>
> Konrad.

BTW: Are you the Konrad "Signum" Hinsen?

Hans-Peter




More information about the PyQt mailing list