[PyKDE] Auto-connecting Slots
apaku at gmx.de
Fri Jan 27 23:45:00 GMT 2006
On 27.01.06 22:46:29, Phil Thompson wrote:
> On Friday 27 January 2006 8:10 pm, Patrick K. O'Brien wrote:
> > Phil Thompson wrote:
> > > Tonight's PyQt4 snapshot implements Torsten's suggestion for using a
> > > decorator to control which signal/slot connections are made when pyuic4
> > > auto-connects.
> > >
> > > The problem is best demonstrated by QSpinBox which emits
> > > valueChanged(QString) and valueChanged(int). Defining an auto-connect
> > > method
> > > on_spinbox_valueChanged means that the method is connected to both
> > > signals and so gets invoked twice. Until now the method had to look at
> > > the type of the argument and just return if it was the one it didn't
> > > want.
> > >
> > > 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.
> > Any chance we could get an easier syntax, such as:
> > @qtsig(int)
> > def on_spinbox_valueChanged(self, value):
> I want to keep it generic in case some other uses pop up.
> At the very least your example would have to be @QtCore.qtsig("int")
Now I know near to nothing about signatures thus I have to ask:
The signature would always sit right in front of the function
If yes than I guess the short version might be ok when it is documented
good (not just a comment with some example, at least when the first
version is released).
If you can put the signature somewhere else (which I doubt currently),
then the longer version would IMHO be better as you can directly see
which slot is meant.
BTW: Will this also solve "issues" like the clicked()-signal from
QAbstractButton? So I could do
and I would get only the call when checked is None and not the 2nd?
Best of all is never to have been born. Second best is to die soon.
More information about the PyQt