Seite 1 von 1

PyQt4: Threads und Signale

Verfasst: Montag 8. Oktober 2007, 06:22
von LukasHetzi
Hallo,
ich will ein Script schreiben, in dem mehrere Threads laufen und dabei über Signale mit dem Main-Thread kommunizieren.
Aber wenn ich ein Signal aus einem Thread schicke passiert bei meinem Code nichts.

Code: Alles auswählen

import sys
import PyQt4
from PyQt4.QtCore import QObject, QThread
import PyQt4.QtGui
import thread

SIGNAL = PyQt4.QtCore.SIGNAL

class Main(QObject):
     def __init__(self):
         app = PyQt4.QtGui.QApplication(sys.argv)

         QThread.__init__(self)

         self.sigStarted = SIGNAL("sigStarted()")
         self.connect(self, self.sigStarted, self.Called)

         thread.start_new_thread(self.foo, ()) # funktioniert nicht
         self.foo()                            # funktioniert

     def foo(self):
         print "foo"
         self.emit(self.sigStarted)

     def Called(self):
         print "Called !"

if __name__ == "__main__":
     obj = Main()
Weiss jemand was ich falsch gemacht habe?

mfg
LukasHetzi

Verfasst: Dienstag 9. Oktober 2007, 13:57
von markus_u
Ja,

du mischt QThread und Python threads. Entscheide dich einfach für eines von beiden. :)

EDIT: gepostetes Codesnippet war Käse

Verfasst: Sonntag 14. Oktober 2007, 20:05
von LukasHetzi
Hallo,

ich habe mein Script auf das für diesen Fehler wichtige reduziert und da haben sich einige (Schönheits-)Fehler eingeschlichen. :wink:
Im ganzen Script verwende ich nur QThreads.. habe ich aber hier wegen der Einfachkeit auf python threads gekürzt... und diese import-Anweisungen sind auch nicht für mein Programm gedacht

----

Ich habe den Fehler schon gefunden. Mir fehlte einfach ein app.exec_()