[PyQt] Proposal for New-style Signals

David Boddie dboddie at trolltech.com
Thu Jan 24 13:17:55 GMT 2008


On Thu Jan 24 10:34:37 GMT 2008, Phil Thompson wrote:
> On Thursday 24 January 2008, David Boddie wrote:

> > I still can't see the attraction of this syntax. I sort of see the point
> > of things like
> >
> >   button.clicked.emit()
> >
> > but the stage 2 connect syntax looks inside-out.
> 
> Because it's focused on the sender rather than the receiver? Your suggestion 
> below does as well.

It's more perverse than that: it's focused on the signal itself. With the
classic syntax

  self.connect(button, SIGNAL("clicked()"), self.doSomething)

there's a nice pattern to follow:

  connect <sender> <signal> <receiver> <slot>

even when <receiver> and <slot> are combined. Ideally, you could combine the
<sender> and <signal>, but arguments complicate the issue. From a C++ user's
perspective, the self is redundant, but that's the case in lots of places in
Python.

With the signal-centric syntax, I think the meaning is different:

  btn.clicked.connect(self.on_clicked)

The signal is saying, "Connect me to this slot."

Not that there's anything wrong with that - it's just a different focus.

David
-- 
David Boddie
Lead Technical Writer, Trolltech ASA


More information about the PyQt mailing list