Ich bin dabei ein Text-adventure-spiel zu programmieren. Dafür erstelle ich bei Klicken auf einen Button immer neue Buttons und lösche die Alten, außerdem verändere den Text eines Texfeldes. Jetzt möchte ich, dass der Text des Texfeldes bei Erscheinen des aktualiesierten Windows mit tts ausgegeben wird. Das Problem ist jetzt, dass der Text erst von pyttsx3 vollkommen ausgegben wird, bevor tkinter einen neuen Schleifendurchlauf starten kann, und somit das Fenster neu zeichnet. Das resultiert darin, dass man immer noch den alten Text sieht, wenn der Neue ausgegeben wird.
Wie kann ich es hinbekommen, dass erst das Fenster aktualisiert wird, und dann der Text ausgegeben ?
Ich habe es schon mit Multiprocessing versucht, aber wenn ich es so mache:
Code: Alles auswählen
p = multiprocessing.Process(target=engine.runAndWait)
p.start()
bekomme ich diesen Fehler:
Code: Alles auswählen
An attempt has been made to start a new process before the
current process has finished its bootstrapping phase.
This probably means that you are not using fork to start your
child processes and you have forgotten to use the proper idiom
in the main module:
if __name__ == '__main__':
freeze_support()
...
The "freeze_support()" line can be omitted if the program
is not going to be frozen to produce an executable.
Ich schätze mal, das hängt damit zusammen, dass Tkinter auch noch multiprogressing verwendet. Weil in meinem Code wird erst nach dem Drücken eines Knopfes ein weitere Text und somit ein weitere Prozess gestartet.
Für alle meine Codebeispiele gilt: Äußert bitte jegliche Art von Verbesserungsvorschlägen. Ich versuche immer meinen Stil zu verbessern und wenn man mir einfach sagt, was ich falsch machen, ist es um einiges einfacher, als wenn ich es mühselig selber herausfinden muss
