Aktualisierung von Labeltexten

Fragen zu Tkinter.
Antworten
arris
User
Beiträge: 3
Registriert: Samstag 19. Januar 2008, 10:14

Samstag 19. Januar 2008, 10:41

Hallo erstmal,

ich habe auf einem Grid aus Labels in einem Frame einen Wegesuchalgorithmus (Algorithmus A) zu laufen. Start-, Zielpunkte und Hindernisse können gesetzt werden, alles funktioniert prima.
Algorithmus und GUI sind getrennt, aber der Algorithmus hält eine Referenz (heißt das in python so?) auf das GUI, um sein Fortschreiten sichtbar zu machen. Selbiges soll geschehen, indem die Labels im Grid mit einem "O" für "offen" oder "X" für "fertig bearbeitet" markiert werden. Das funktioniert an sich prima, nur leider sehe ich erst das fertige Ergebnis, was die Absicht etwas konterkariert. Offensichtlich hält die Rechnerei des Algorithmus das GUI vom Anzeigen ab und es hat Sendepause, bis der fertig ist. Das Thema "Threads" wollte ich nicht anschneiden, dass ist derzeit für die Zielgruppe zu anspruchsvoll.

Frage: Gibt es einen Weg, die Aktualisierung des GUI zu erzwingen (welchen?) oder die Rechnerei so zu unterbrechen, dass Zeit dafür bleibt?

Danke
Ralf
BlackJack

Samstag 19. Januar 2008, 10:58

Zum aktualisieren der GUI gibt's die Methoden `update()` und `update_idletasks()`.

Wenn Du Algorithmus und GUI noch besser trennen möchtest, könntest Du dem Algorithmus eine Callback-Funktion mit auf den Weg geben, die bei jeder Änderung eines Feldes vom Algorithmus aufgerufen wird.
arris
User
Beiträge: 3
Registriert: Samstag 19. Januar 2008, 10:14

Samstag 19. Januar 2008, 16:20

Danke, das mit dem update hat geholfen. Hatte's schon fast selbst gefunden, aber auf den Container anzuwenden versucht.

Das mit der Callback-Funktion interessiert mich jetzt aber doch. Heißt das, ich brauche im Grunde nur eine Referenz auf die Funktion mitzugeben statt einer auf das ganze Objekt?
Die python-docs sind ein wenig... unübersichtlich. Ich versuch', mich schlau zu machen. Danke erstmal
Antworten