On Fri, 29 Jun 2012 21:51:34 +1000, John Floyd <jfl...@bigpond.net.au> wrote: > On Fri, 29 Jun 2012 10:00:44 you wrote: >> On Fri, 29 Jun 2012 18:02:47 +1000, John Floyd <jfl...@bigpond.net.au> >> >> wrote: >> > On Fri, 29 Jun 2012 08:52:00 you wrote: >> >> On Fri, 29 Jun 2012 17:22:51 +1000, John Floyd <jfl...@bigpond.net.au> >> >> >> >> wrote: >> >> > The question relates to the signatures used to connect overloaded >> >> >> >> signals. >> >> >> >> > What do you use for signature in the new signals. I have tried >> >> > using >> >> >> >> the >> >> >> >> > same >> >> > arguments that are specified in the old method but does not work. >> >> > >> >> > Eg an example from pyqwt >> >> > >> >> > old method >> >> > >> >> > self.picker.connect(self.picker, SIGNAL('selected(const >> >> > QwtPolygon&)'), >> >> > >> >> > self.slotter) >> > >> > This works >> > >> >> > have tried >> >> > >> >> > self.picker.selected[QwtPolygon].connect(self.slotter) >> >> > >> >> > and >> >> > >> >> > self.picker.selected['QwtPolygon'].connect(self.slotter) >> >> > >> >> > with no success. >> >> >> >> Define "no success". >> > >> > The 2nd call results in "KeyError: 'there is no matching overloaded >> > signal'" >> >> What does the first call result in? > Actually QwtPolygon does not appear to be defined at the python level.
So it's never going to work. You need to find out how PyQwt implements QwtPolygon. > The reason I tried it was that a listing of signals (a short script that > scanned the gmetaobject) indicated that this was the valid variable type > and > that the old style works. As a string index is acceptable - what string > can > be used in the new style? Obviously there is not a one to one > relationship > between signatures in old and new methods. How can we determine those that > are > recognized for the new style. > > I have also tried (based on the arguments to old style connect > self.picker.selected['selected(const QPolygon)'].connect(self.slotter) > self.picker.selected['QPolygon'].connect(self.slotter) > > with resulting error: TypeError: C++ type ..... is not supported as a > bound > signal type argument type >> >> >> > the user docs does suggest "A type is either a Python type object or >> >> a >> >> >> > string >> >> > that is the name of a C++ type" >> >> > >> >> > In this regard I have notices that in the code generated from the >> >> > sip >> >> > files, >> >> > the pyqt4QtSignal defintion is >> >> > >> >> > selected(QwtPolygon) >> >> > >> >> > This is particularly confusing where for mappedtypes from a template >> >> >> >> where >> >> >> >> > the >> >> > c++ variable is QArray<QwtDoublePoint> which is in the c++ signature >> >> > whilst >> >> > the python 'equivalent' is QwtQArrayQwtDoublePoint. >> >> > >> >> > Clarification would be very useful. At the moment I am not sure if >> >> >> >> there >> >> >> >> > is a >> >> > coding problem (mine or at the sip end) or just my ignorance. >> >> >> >> They should be interchangeable. In the current of PyQt a bound signal >> >> has >> >> >> a "signal" attribute that is the corresponding C++ signal so you can >> >> check >> >> what signature is actually being used. >> > >> > Not sure exactly what you mean here, I have tried the following >> > >> > print self.picker.selected.signal >> > >> > and get "'PyQt4.QtCore.pyqtBoundSignal' object has no attribute >> >> 'signal'" >> >> What version of PyQt? Like I said, this is available in the current >> version. > > OK I am running PyQt4 4.8.6 not the very latest. > Is there another way to obtain the signatures that the python signal > methods > recognizes? You can look at the PyQwt source code. Phil _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt