pyqt4 emite señales en hilos a ranuras en el hilo principal

Tengo algunas señales personalizadas en mi hilo principal que me gustaría emitir en mis otros hilos, pero no estoy seguro de cómo conectarlos. ¿Podría alguien publicar un ejemplo?

ex:

import sys, time from PyQt4 import QtGui as qt from PyQt4 import QtCore as qtcore app = qt.QApplication(sys.argv) class widget(qt.QWidget): signal = qtcore.pyqtSignal(str) def __init__(self, parent=None): qt.QWidget.__init__(self) self.signal.connect(self.testfunc) def appinit(self): thread = worker() thread.start() def testfunc(self, sigstr): print sigstr class worker(qtcore.QThread): def __init__(self): qtcore.QThread.__init__(self, parent=app) def run(self): time.sleep(5) print "in thread" self.emit(qtcore.SIGNAL("signal"),"hi from thread") def main(): w = widget() w.show() qtcore.QTimer.singleShot(0, w.appinit) sys.exit(app.exec_()) main() 

Señal nunca subida.

En realidad, se conecta la señal incorrecta a la ranura. Algunas modificaciones hacen que funcione como se espera

 import sys, time from PyQt4 import QtGui as qt from PyQt4 import QtCore as qtcore app = qt.QApplication(sys.argv) class widget(qt.QWidget): def __init__(self, parent=None): qt.QWidget.__init__(self) def appinit(self): thread = worker() self.connect(thread, thread.signal, self.testfunc) thread.start() def testfunc(self, sigstr): print sigstr class worker(qtcore.QThread): def __init__(self): qtcore.QThread.__init__(self, parent=app) self.signal = qtcore.SIGNAL("signal") def run(self): time.sleep(5) print "in thread" self.emit(self.signal, "hi from thread") def main(): w = widget() w.show() qtcore.QTimer.singleShot(0, w.appinit) sys.exit(app.exec_()) main()