On Tuesday 29 May 2007 11:58 am, Alexander Eisenhuth wrote: > Hello pyqt users, > > i tried to use signal / slot across threads. With the following example I > want to emit a signal when the thread loop is entered. The connected slot > is never called. Why? > > Any help is very welcome ... > > Alexander > > import time > import sys > import PyQt4 > from PyQt4.QtCore import (QObject, QThread) > SIGNAL = PyQt4.QtCore.SIGNAL > > class CancelableQtThread_(QThread): > > def __init__(self): > QThread.__init__(self) > self.sigStarted = SIGNAL("sigStarted()") > > def run(self): > print "Enter thread" > self.emit(self.sigStarted) > time.sleep(0.1) > print "Leave thread" > > class TestSigSlot(QObject): > > def __init__(self): > QObject.__init__(self) > self._thread = CancelableQtThread_() > self.connect(self._thread, self._thread.sigStarted, self.Called) > self._thread.start() > > time.sleep(1.0) > > def Called(self): > print "Called !" > > if __name__ == "__main__": > obj = TestSigSlot()
Signals across threads are implemented using the event loop. You don't have an event loop running in your main thread - you don't even have a QCoreApplication instance. Phil -- http://mail.python.org/mailman/listinfo/python-list