Home     |     .Net Programming    |     cSharp Home    |     Sql Server Home    |     Javascript / Client Side Development     |     Ajax Programming

Ruby on Rails Development     |     Perl Programming     |     C Programming Language     |     C++ Programming     |     IT Jobs

Python Programming Language     |     Laptop Suggestions?    |     TCL Scripting     |     Fortran Programming     |     Scheme Programming Language


 
 
Cervo Technologies
The Right Source to Outsource

MS Dynamics CRM 3.0

Python Programming Language

PyQt: Is signal / slot really working across threads?


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

On Tuesday 29 May 2007 11:58 am, Alexander Eisenhuth wrote:

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

Ok, thanks.

Phil Thompson schrieb:

Add to del.icio.us | Digg this | Stumble it | Powered by Megasolutions Inc