Wie wird aus dem Python-Skript mit der Erweiterung .pyw nach stdout gedruckt?

9

Ich habe ein Python-Programm mit einer wxpython-GUI und einigen Befehlszeilenparametern. Ich erzeuge eine einzelne Windows-Programmdatei mit py2exe. Ich möchte kein Befehlszeilenfenster im Hintergrund haben, also macht py2exe dies zu einem Pythonw-Programm ohne dieses Fenster. Dies entspricht der Verwendung der * .pyw-Erweiterung.

Das Problem ist, wenn Sie die verfügbaren Befehlszeilenargumente sehen möchten, tun Sie natürlich "main.exe-h" in einer Shell. Obwohl argparse diese Informationen bereitstellt, erreicht es aufgrund der * .pyw-Erweiterung nicht die Standardausgabe.

Also, wie könnte ich stdout für eine GUI-Anwendung mit pythonw wieder aktivieren?

minimales Arbeitsbeispiel:

%Vor%

Ausführung:

%Vor%

Vielen Dank im Voraus für einen Vorschlag!

    
Martin Schulze 24.10.2011, 23:44
quelle

3 Antworten

0

Ich habe mein Problem endlich mit einem bösen Trick gelöst. Ich bekomme die Hilfeinformation von argparse so:

%Vor%

Dann zeige ich nur die Hilfe-Informationen im About-Dialog.

Ich würde immer noch lieber sys.stdout wieder aktivieren, aber das funktioniert jetzt. Danke an alle Vorschläge!

    
Martin Schulze 09.02.2012, 16:32
quelle
3

Eine Möglichkeit, dies zu tun, ist die Verwendung von py2exes benutzerdefiniertem Boot-Skript , um sys.stdout umzuleiten eine Datei, wenn ein bestimmter Befehlszeilenschalter vorhanden ist.

Ich werde hier einen Beispielcode haben, wenn ich ihn ausgraben kann, aber überprüfe den Link, um dich zu starten.

    
rossipedia 24.10.2011 23:53
quelle
1

Sie können auch wissen, dass die App-Instanz von wxPython umgeleitet wird. Setzen Sie einfach den Parameter "redirect" auf True:

%Vor%

Eine andere Lösung wäre, das Protokollierungsmodul von Python zu verwenden, statt sich auf das Drucken von Strings zu verlassen. Damit können Sie unter anderem in eine Datei oder verschiedene Webprotokolle einloggen. Ausführliche Informationen finden Sie in der Dokumentation: Ссылка

Es gibt auch ein gutes Einführungs-Tutorial hier: Ссылка

    
Mike Driscoll 25.10.2011 13:56
quelle