I have a python program with a wxpython GUI and some command line parameters. I generate a single windows executable with py2exe. I don't want to have a command line window in the background, so py2exe is making this a pythonw executable without this window. This is equivalent to use the *.pyw extension.
The problem is, if you want to see the available command line arguments, you naturally do "main.exe -h" on a shell. Even though argparse is providing this information, it doesn't reach stdout because of the *.pyw extension.
So how could I re-enable stdout for a GUI application using pythonw?
minimal working example:
# test.py
print "hello"
execution:
#> python test.py
hello
#> pythonw test.py
#>
Thanks in advance for any suggestion!
One way I've done this is use py2exe's custom-boot-script to redirect sys.stdout
to a file when a certain command line switch is present.
I'll have some sample code here when I can dig it up, but check the link out to get you started.
You can tell wxPython's App instance to redirect too. Just set the "redirect" parameter to True:
app = wx.App(True)
Another solution would be to use Python's logging module instead of relying on printing strings to stdout. Using that, you can log to a file or to various web protocols, among others. See the documentation for full details: http://docs.python.org/library/logging.html
There's also a good introductory tutorial here: http://www.doughellmann.com/PyMOTW/logging/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With