main thread is not in main loop

Fragen zu Tkinter.
Antworten
Saftmixer
User
Beiträge: 26
Registriert: Mittwoch 14. Dezember 2011, 19:00

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
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.
Antworten