Seite 1 von 1

wxPython und os.system()

Verfasst: Freitag 9. September 2011, 19:39
von akhof
Hallo!
Ich weiß, dass diese Frage etwas dumm klingt, aber ich weiß keinen Rat, und habe auch im Internet nichts nützliches gefunden.
Ich würde gerne ein Programm entwickeln, bei dem ich os.system() verwenden möchte.
Außerdem möchte ich die Ausgaben, die mein os.system zurückgibt in einem wxPython-Dialog wiedergeben, hab aber leider keine Ahnung, wie ich soetwas anstellen könnte.
Ich habe keine Ahnung, ob ich mein StaticText alle 0.2 Sekunden aktuallisieren soll, oder wie ich sonst an die neuesten Wiedergaben rankomme...

Vielen Dank schoneinmal im Vorraus!

akhof :D :D :D

Re: wxPython und os.system()

Verfasst: Freitag 9. September 2011, 20:30
von BlackJack
@akhof: `os.system()` gibt nur die Zahl zurück, welche die Shell mit der das Argument ausgeführt wird als Exit-Code liefert. Wenn Du an Ausgaben eines Programms auf dessen Standard- und/oder Fehlerausgabe herankommen willst, dann solltest Du entweder das `subprocess`-Modul verwenden, oder bei `wx` vielleicht auch `wx.Execute()` zusammen mit einem `wx.Process`-Exemplar.

Re: wxPython und os.system()

Verfasst: Sonntag 11. September 2011, 14:40
von Dav1d
Ich empfehle dir subprocess (wx.Process ist nicht so toll). Du hast dann im Grunde 2 Möglichkeiten, stdout/stderr direkt in eine LogCtrl pipen http://www.blog.pythonlibrary.org/2010/ ... -and-more/. Oder du machst das mithilfe von .stdout.read() in einem seperaten Thread (oder select unter unix), so in etwa: https://bitbucket.org/dav1d/mplayerctrl ... .py#cl-729 - Jedoch solltest du Command-Events verwenden (nicht wie ich ..., der fix wird jedoch bald noch kommen), da Command-Events auch "Parents" erreichen, nicht nur Children vom Widget.

Re: wxPython und os.system()

Verfasst: Freitag 16. September 2011, 19:45
von akhof
Vielen Dank erstmal!!

Hat evt. jemand ein Beispeil - ich habe dieses Prinzip leider noch nicht ganz verstanden... :K

Man soll den Vorgang, der mehrere Minuten dauern kann auch abbrechen können
Ich habe leider keine Vorahnung, was dieses Fachgebiet betrifft... :K :K :K

Vielen Danke schoneinmal...

Re: wxPython und os.system()

Verfasst: Samstag 17. September 2011, 10:45
von Dav1d
Hast du dir überhaupt das subprocess-Modul angesehen? - Wenn ja wärst du auf Dinge gestoßen wie terminate() und kill()

Re: wxPython und os.system()

Verfasst: Samstag 17. September 2011, 11:49
von akhof
Ja, das habe ich...
Jedoch fällt der ertse Link weg, weil man dafür "winnet32" benötigt - Ich arbeite mit Linux

Und den zweiten Link habe ich mir zwar nocheinmal angeschaut, habe diesen leider immernochnicht richtig verstanden.

akhof :D :D :K :D :D

Re: wxPython und os.system()

Verfasst: Samstag 17. September 2011, 12:00
von Dav1d
Zum 1. Link, der Link sollte dir als Anhaltspunkt dienen, wie man einen Prozess startet, während eine GUI existiert (wx.Yield()) oder du machst es wie im 2. Link, indem du in einem Thread den Prozess handelst (von stdout/stderr lesen).

//Edit: https://bitbucket.org/dav1d/mplayerctrl ... py#cl-1242 hier siehst du wie man den Prozess beendet.