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!
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!
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.
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: Ссылка