PyQt: Is signal / slot really working across threads?

Alexander Eisenhuth newsuser at stacom-software.de
Tue May 29 06:58:30 EDT 2007


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()



More information about the Python-list mailing list