passing tuple with pyqt4 signal/slot mechanism

Phil Thompson phil at riverbankcomputing.co.uk
Thu Apr 26 11:05:33 EDT 2007


On Thursday 26 April 2007 3:41 pm, Diez B. Roggisch wrote:
> Pradnyesh Sawant schrieb:
> > Hello,
> > I have a pyqt4 code in which i'm trying the signal/slot mechanism. The
> > (stripped) code is as follows:
> >
> > class D(QtCore.QThread):
> >    def __init__(self):
> >        QtCore.QThread.__init__(self)
> >        tpl = ("Primary", "priSec")
> >        print "tpl:", tpl
> >        self.emit(QtCore.SIGNAL("setLabel"), tpl)
> > class Gui(QtGui.QDialog):
> >    def __init__(self, parent = None):
> >        QtGui.QDialog.__init__(self, parent)
> >    def setLabel(self, tpl):
> >        print "####tpl:", tpl
> >        print "**********tpl:", str(tpl)
> >        return
> > if __name__ == "__main__":
> >    app = QtGui.QApplication(sys.argv)
> >    dialog = Gui()
> >    d = D()
> >    QtCore.QObject.connect(d, QtCore.SIGNAL("setLabel"),
> >            dialog.setLabel, QtCore.Qt.QueuedConnection)
> >    sys.exit(dialog.exec_())
> >
> > The output i'm getting is as follows:
> >
> > tpl: ('Primary', 'priSec')
> > ####tpl: (<refcnt 0 at 0xb7caac8c>,)
> > **********tpl: ((((((((<NULL>,),),),),),),),)
> >
> > Can anyone kindly tell me what's happening here? Why is the tuple
> > ("Primary", "priSec") getting converted to this <NULL> thingy? And
> > what is this thingy anyways (It looks to be a deeply nested tuple, but
> > am not sure).
>
> It's just wild guessing back from my Qt3-days - but isn't PYSIGNAL
> instead of SIGNAL necessary here?

No, PyQt4 used SIGNAL for both Qt and Python signals.

Phil



More information about the Python-list mailing list