[PyQt] New vs new signals - signatures

Phil Thompson phil at riverbankcomputing.com
Fri Jun 29 10:00:44 BST 2012


On Fri, 29 Jun 2012 18:02:47 +1000, John Floyd <jfloyd at 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 <jfloyd at 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?

>> > 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.

Phil


More information about the PyQt mailing list