wxPython und os.system()

Plattformunabhängige GUIs mit wxWidgets.
Antworten
akhof
User
Beiträge: 104
Registriert: Mittwoch 11. Mai 2011, 19:07
Kontaktdaten:

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
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.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

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.
the more they change the more they stay the same
akhof
User
Beiträge: 104
Registriert: Mittwoch 11. Mai 2011, 19:07
Kontaktdaten:

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...
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Hast du dir überhaupt das subprocess-Modul angesehen? - Wenn ja wärst du auf Dinge gestoßen wie terminate() und kill()
the more they change the more they stay the same
akhof
User
Beiträge: 104
Registriert: Mittwoch 11. Mai 2011, 19:07
Kontaktdaten:

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
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

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.
the more they change the more they stay the same
Antworten