Statuszeile mit Daten aus Datei verändern

Fragen zu Tkinter.
Antworten
api
User
Beiträge: 181
Registriert: Donnerstag 7. August 2008, 21:23

Hallo,

ich habe in einer GUI - Tkinter - einen Start-Button, der ein anderes Programm aufruft. Dieses andere Programm schreibt eine Stati in eine Datei. Diese Datei möchte ich nun in der Form in meiner GUI auslesen, dass dort ständig ein Status-Label aktualisiert wird.
Ich rufe dieses externe Programm mit "os.system(...)" auf. Wartet die GUI in diesem Fall so lange bis das externe Programm fertig ist? Oder kann die GUI auch ständig diese Datei auslesen und dann den dort gelesenen Status anzeigen? Hat das eventuell was mit Threading zu tun oder wie soll ich mich dem Problem nähern?
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

Benutz subprocess statt os.system und lies die Dokumentation, dort werden alle deine Fragen beantwortet.

http://docs.python.org/library/subproce ... subprocess
Bottle: Micro Web Framework + Development Blog
api
User
Beiträge: 181
Registriert: Donnerstag 7. August 2008, 21:23

Hallo Defnull,

danke für die Info - werde ich mal durchstöbern...
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

api hat geschrieben:ich habe in einer GUI - Tkinter - einen Start-Button, der ein anderes Programm aufruft. Dieses andere Programm schreibt eine Stati in eine Datei. Diese Datei möchte ich nun in der Form in meiner GUI auslesen, dass dort ständig ein Status-Label aktualisiert wird.
Das Stichwort hier wäre die "after()-Methode" von Tkinter, die du nutzen kannst, um in bestimmten selbst festlegbaren Abständen "etwas" zu tun.

Threads sind in Verbindung mit Tkinter in der Regel keine gute Idee (dazu findest du einiges im Forum) und in diesem Fall auch nicht nötig.
jtk
User
Beiträge: 37
Registriert: Montag 19. November 2007, 17:16

system wartet auch, aber da steht der ganze prozess still, und das fenster könnte sich (zumindest bei windows, wie das halt so is) aufhängen.
Antworten