Hi, Tibold. Thanks for your reply. If I first move my worker to the new thread and then make the connection should it work?
According to the documentation, it would use an auto-connection and since emitter and receiver don't have the same thread affinity, it would create a queued connection. Is it right? Best, 2013/4/8 Tibold Kandrai <[email protected]> > Hi,**** > > ** ** > > I think you’ll have to use queued connection when you connect the > photoStatus signal to the photoStatus slot.**** > > ** ** > > See:**** > > > http://qt-project.org/doc/qt-4.8/threads-qobject.html#signals-and-slots-across-threads > **** > > ** ** > > Cheers,**** > > Tibold**** > > ** ** > > *From:* [email protected] [mailto: > [email protected]] *On Behalf Of *William > Dias > *Sent:* 2013 April 08, Monday 17:01 > *To:* [email protected] > *Subject:* [PySide] Signal emitted on a worker thread not being received > by main thread**** > > ** ** > > Hi,**** > > ** ** > > I am facing an intermittent problem with my PySide application. I have a > GUI that spawns several threads that are responsible for sending photos to > a web server. The threads are created as shown bellow:**** > > ** ** > > photoConnectionThread = QThread()**** > > photoConnectionObject = http_connection.PhotoConnection(self.filename)**** > > photoConnectionObject.photoStatus.connect(self.photoStatus) ** > ** > > photoConnectionObject.moveToThread(photoConnectionThread)**** > > photoConnectionThread.started.connect(photoConnectionObject.work)**** > > photoConnectionThread.finished.connect(self.threadFinished)**** > > photoConnectionThread.start()**** > > ** ** > > My worker thread tries to upload a photo only once and then emits a signal > to the main thread so that the status can be updated in a database. **** > > ** ** > > def work(self):**** > > logger.info("photo object created on thread " + > str(self.thread()))**** > > status = sendPhoto(self.filename)**** > > self.photoStatus.emit(self.filename, status)**** > > QThread.sleep(5)**** > > logger.info("exiting thread " + > str(self.thread()))**** > > self.thread().exit(0)**** > > ** ** > > The problem is that, sporadically, the main thread does not receive the > signal and consequently doesn't get the status updated.**** > > ** ** > > Does anybody have any idea why this is happening?**** > > ** ** > > I am using:**** > > Python 2.7**** > > PySide 1.1.1**** > > Windows 7**** > > ** ** > > Thank you!**** >
_______________________________________________ PySide mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/pyside
