Moin,
ich will für ein Python-Programm eine grafische Oberfläche mittel PyQt v3 erstellen. In dem Programm nutzen ich "os.system()" Aufrufe, um Systembefehle auszuführen. Deren Ausgabe würde ich nun gerne in der GUI in ein Log-Fenster umleiten.
Leider konnte ich weder herausfinden, welches Widget nun dafür das geeigneste ist, noch wie man die Ausgabe in dem Log-Fenster umleitet.
Ich habe dazu hier gesucht und gegoogelt, konnte aber keine passenden Code-Schnipsel finden.
Ich bin für jede Hilfe dankbar.
[PyQt3] Systemausgabe in Log-Fenster umlenken
Hi und willkommen im Forum.
Mit PyQT kenne ich mich nicht aus. Aber wie du generell ausgaben von Aufgerufenen Programmen abfangen kannst geht so:
[wiki]Neue Features#Subprocess[/wiki]
``proc_output_stdout`` enthält danach die gesamte Textausgabe die an stdout von dem aufgerufenen Programm gemacht wurde.
lg
Mit PyQT kenne ich mich nicht aus. Aber wie du generell ausgaben von Aufgerufenen Programmen abfangen kannst geht so:
[wiki]Neue Features#Subprocess[/wiki]
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: utf-8 -*-
import subprocess
# Subprozess (DOS befehl *dir* in der cmd) an den namen process binden...
process = subprocess.Popen('dir *.py', shell=True, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
# ...,dan ausführen und solange warten bis der Prozess abgearbeitet wurde.
process.wait()
# Die Ausgabe des Prozessen an stdout an ``proc_output_stdout`` binden.
proc_output_stdout = process.stdout.read()
# Die Ausgabe des Prozessen, an stderr, an ``proc_output_stderr`` binden.
proc_output_stderr = process.stderr.read()
#
#
# Nun brauchst du nur ``proc_output_stdout`` und/oder ``proc_output_stderr``
# in dein selbstgemachtes Log-Window Widget auszugeben.
print proc_output_stdout
lg
Danke, aber leider kann 'subprocess' die Ausgabe nicht gleich ausgeben, sondern erst wenn der Befehl abgearbeitet ist.
Auf der Suche nach einer anderen Sache habe ich im PyQt Wiki den passenden Code gefunden: Capturing_Output_from_a_Process.
Frage mich, wie ich das vorher nicht sehen konnte. Funktioniert aber wunderbar.
Danke nochmal.
Auf der Suche nach einer anderen Sache habe ich im PyQt Wiki den passenden Code gefunden: Capturing_Output_from_a_Process.
Frage mich, wie ich das vorher nicht sehen konnte. Funktioniert aber wunderbar.
Danke nochmal.
Gruß
Arlsair
Arlsair
Das ist falsch, mit `subprocess` kann man die Ausgaben auch zeilenweise lesen und verarbeiten.arlsair hat geschrieben:Danke, aber leider kann 'subprocess' die Ausgabe nicht gleich ausgeben, sondern erst wenn der Befehl abgearbeitet ist.
Und wie? Es wird erst stdout ausgegeben wen der ``process`` terminiert wurde. Also hat arlsair garnciht unrecht, das erst ``stdout/stderr`` ausgegeben wird, wenn der ``process`` beendet wurde.BlackJack hat geschrieben:Das ist falsch, mit `subprocess` kann man die Ausgaben auch zeilenweise lesen und verarbeiten.arlsair hat geschrieben:Danke, aber leider kann 'subprocess' die Ausgabe nicht gleich ausgeben, sondern erst wenn der Befehl abgearbeitet ist.
Hier der thread wo ich danach gerade gefragt habe: http://www.python-forum.de/topic-9133.html?highlight=
Falls du weißt wie das geht, könntest du mir ja im anderen thread auf die Sprünge helfen
lg