Seite 1 von 1

Script gleichzeitig zu geöffnetem tkinter ausführen

Verfasst: Freitag 1. März 2019, 23:12
von Daggett
Hallo!
Ich bin gerade dabei ein Brettspiel als Computerspiel zu programmieren.

Vorweg sollte ich noch sagen, dass ich recht unroutiniert bin und alles ohne Klassen mache. Von pygame habe ich gehört, damit will ich aber zur Zeit nicht arbeiten - ich weiß auch nicht, ob mir das überhaupt weiterhelfen würde. Ich benutze Module mit Funktionen, die ich dann über mein "Hauptscript" aufrufe.

Ich habe also ein Script geschrieben, welches die Spielphasen nach und nach durchläuft und zwischendurch - wie schon erwähnt - Funktionen aus anderen Modulen aufruft. Das klappt auch alles schon ganz gut. So. Jetzt wäre ein Spiel aber kein schönes Spiel, wenn man nicht auch ein entsprechendes Spielbrett dazu hätte. Dieses habe ich mit tkinter und canvas erstellt. Es hat reichlich Schaltflächen, die ich alle einzeln abfragen kann. Auch das funktioniert wie gewünscht.

Nun mein Problem:
Ich möchte mein "Spielbrett" die ganze Zeit sichtbar haben und das Hauptscript soll parallel dazu ablaufen. Über meine Funktionen und unterschiedliche Ein- und Ausgabefenster (Radiobuttons, Checkbuttons, normale Fenster, ...) können gewisse Daten abgefragt und Informationen ausgegeben werden. Das passiert alles über das Hauptscript. Jetzt brauche ich aber auch Informationen von meinem "Spielbrett". Es gelingt mir nicht, das Modul mit dem canvas-Spielbrett und mein Hauptscript gleichzeitig ablaufen zu lassen, damit beide interagieren können.

Ich habe wie gesagt ein Script mit dem Programm und eins mit dem GUI und ich schaffe es nicht beide gleichzeitig auszuführen.
Ich habe versucht,
- beide gleichzeitig zu öffnen, über import aus einem anderen Script.
- das eine von dem jeweils anderen aus zu öffnen.
- beide im gleichen Script unterzubringen und so zu starten.

Das Ergebnis ist eigentlich immer dasselbe: Die Programm und GUI werden nacheinander ausgeführt.

Also bitte: Wie kann ich beides gleichzeitig ausführen, damit beides miteinander interagieren kann???

Danke für Eure Zeit und Hilfe!

Re: Script gleichzeitig zu geöffnetem tkinter ausführen

Verfasst: Freitag 1. März 2019, 23:33
von __deets__
Du musst dein Spielskript so gestalten, das es seine Arbeit in kleinen Schritten ausgeführt wird. Und diese dann aus der GUI mittels eines Timers auslösen. Der Mechanismus in Tkinter dafür heißt after, und wird hier seeeeehr oft diskutiert. Einfach mal ein bisschen suchen.

Dinge wie time.sleep sind damit aber tabu. Du musst zb beim abwarten so arbeiten, dass du dir einen Zeitpunkt merkst, und in den periodischen aufrufen schaust, ob genug Zeit vergangen ist.

Re: Script gleichzeitig zu geöffnetem tkinter ausführen

Verfasst: Freitag 1. März 2019, 23:50
von __blackjack__
@Daggett: Das was __deets__ schon schrieb. Es ist im Grunde eine komplette Umkehr der Kontrolle. Dein Code bestimmt nicht mehr den Ablauf durchgehend und direkt, sondern die GUI hat eine Hauptschleife aus der heraus alles gesteuert wird.

Und da kommt dann objektorientierte Programmierung ins Spiel, denn Du hast ja keine dauerhaft laufenden Funktionen mehr sondern musst Dir über aufrufe vom GUI-Rahmenwerk Zustände merken. Und das macht man mit Objekten/Klassen. Da führt bei GUI-Programmierung in der Regel kein Weg dran vorbei.