Befehlsausgabe in *echtzeit* in TextView einfügen
Verfasst: Samstag 12. Februar 2005, 09:43
Hallo.
Da bin ich wieder.
Diesmal dürfte es aber auf jeden Fall eine Kleinigkeit sein, die ich übersehe.
In meinem Skript wird ein externes Programm aufgerufen, wenn der Benutzer einen Button anklickt.
Dieses Ausgabe wird in einem neuen Fenster, das lediglich einen TextView und einen Button enthält dargestellt, damit der Benutzer auch weiß, ob alles richtig funktioniert.
Mit meinem jetzigen Code (siehe unten) funktioniert das auch. Leider aber erst, wenn der Befehl beendet ist. So denkt der Benutzer erstmal, dass das Skript "hängt", oder so.
Ich habe bereits wie so'n kleiner Irre die PyGTK Reference durchwühlt um etwas in Richtung textubffer = std* oder Ähnliches zu finden.
Aber anscheinend gibts das nicht.
Die Idee mit gtk.events_pending oben hatte ich mal in einer Mailingliste bekommen. Aber wirklich lösen lässt sich das Problem nicht. Es hat lediglich den Vorteil, dass das Fenster überhaupt vor Beendigung des Befehls erscheint.
Habt ihr vielleicht eine Lösung für das Problem parat? So ungewöhnlich wird mein Vorhaben ja nicht sein. Gerade in *nix-Umgebungen trifft man ja häufiger auf Programme, die sich so mitteilen.
Marcus
Da bin ich wieder.
Diesmal dürfte es aber auf jeden Fall eine Kleinigkeit sein, die ich übersehe.
In meinem Skript wird ein externes Programm aufgerufen, wenn der Benutzer einen Button anklickt.
Dieses Ausgabe wird in einem neuen Fenster, das lediglich einen TextView und einen Button enthält dargestellt, damit der Benutzer auch weiß, ob alles richtig funktioniert.
Mit meinem jetzigen Code (siehe unten) funktioniert das auch. Leider aber erst, wenn der Befehl beendet ist. So denkt der Benutzer erstmal, dass das Skript "hängt", oder so.
Code: Alles auswählen
while gtk.events_pending():
gtk.main_iteration()
for item in os.popen(befehl+parameter+' 2>&1').readlines():
textbuffer1.insert_at_cursor(item)
Aber anscheinend gibts das nicht.
Die Idee mit gtk.events_pending oben hatte ich mal in einer Mailingliste bekommen. Aber wirklich lösen lässt sich das Problem nicht. Es hat lediglich den Vorteil, dass das Fenster überhaupt vor Beendigung des Befehls erscheint.
Habt ihr vielleicht eine Lösung für das Problem parat? So ungewöhnlich wird mein Vorhaben ja nicht sein. Gerade in *nix-Umgebungen trifft man ja häufiger auf Programme, die sich so mitteilen.
Marcus