Seite 1 von 1

main thread is not in main loop

Verfasst: Dienstag 30. Oktober 2012, 16:19
von Saftmixer
Hey,

die Fehlermeldung "main thread is not in main loop" hat sicherlich jeder schonmal bekommen. Ich habe jetzt folgendes Problem: Ich habe einen eigenständigen Thread mit der Grafik, und einen mit der Spiellogik. Die Spiellogik gibt an bestimmen stellen eine Meldung aus. Und zwar über die Grafik. Am Anfang funktioniert das ganze auch gut. Nach einer Weile kommt dann aber doch die genannte Fehlermeldung. In anderen Threads habe ich gelesen, das das daran liegt, das es zwei unterschiedliche Threads sind.. Ich habe aber keine Möglichkeit das ganze in einen Thread zu packen.. Gibt es eine Möglichkeit den Mainloop-Thread zu veranlassen etwas außzugeben, und das nicht direkt aus einem anderen zu machen?
Hier nich die wichtigen Codestellen:
1. Der Ausgabencode

Code: Alles auswählen

def __init(self):
        self.console = Text(self.window,width=90)
        
    def ausgeben(self, text):
        self.console.insert(END, text + "\n")
2. Der Aufrufer

Code: Alles auswählen

if random.randint(0, 50) == 0:
    self.neuerEinsatz()
    self.grafik.ausgeben("Neuer Einsatz.")
Saftmixer

Re: main thread is not in main loop

Verfasst: Dienstag 30. Oktober 2012, 20:59
von BlackJack
@Saftmixer: Eine übliche Möglichkeit ist es die Threads über `Queue`-Objekte (aus dem gleichnamigen Modul) kommunizieren zu lassen. Der GUI-Thread schaut in regelmässigen Abständen in der `Queue` ob es etwas für ihn zu tun gibt.