[PyKDE] Auto-connecting Slots

Giovanni Bajo rasky at develer.com
Sat Jan 28 00:31:56 GMT 2006


Phil Thompson <phil at riverbankcomputing.co.uk> wrote:

> The QtCore.signature() decorator takes a single argument which is, in
> effect, the C++ signature of the method which tells the auto-connect
> code which signal to connect. For example...
>
>     @QtCore.signature("on_spinbox_valueChanged(int)")
>     def on_spinbox_valueChanged(self, value):
>         # value will only ever be an integer.
>
> See the calculatorform.py example.


Notice that naming it "signature" is a namespace violation from those using
"from QtCore import *". OTOH, you shouldn't impose this code style of prefixing
each and every name with the QtModule name: I personally hate it, and I can't
see why Python code should get 3 times more verbose than the corresponding C++
code. Having 'Q' at the beginning of the word is enough namespace for me and
for every C++ Qt project out there. Specifically, Qt itself does not expose
anything but symbols which begins with "Q" (or fullly-uppercase macros and
similar things).

I'd really prefer to have it named something like "qtsignature".

Also, as others said, replicating the whole signal name really stems out as
unpythonic. Listing the arguments type could be well enough:

@qtsignature("int")
def on_spinbox_valueChanged(self, value):
    # ....

Actually, you might even use the corresponding Python it instead of a string:

@qtsignature(int, QString)

or something like that.

Giovanni Bajo




More information about the PyQt mailing list