PyQt4: Threads und Signale

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
LukasHetzi
User
Beiträge: 14
Registriert: Donnerstag 25. Januar 2007, 12:01

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
markus_u
User
Beiträge: 3
Registriert: Dienstag 9. Oktober 2007, 13:39

Ja,

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

EDIT: gepostetes Codesnippet war Käse
LukasHetzi
User
Beiträge: 14
Registriert: Donnerstag 25. Januar 2007, 12:01

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