在Windows下wxPython中去除Python控制台
可能重复的问题:
如何在Windows上运行的PyQt应用中隐藏控制台窗口?
如何在Windows上运行wxPython程序时去掉那个作为标准输出显示的控制台窗口?
4 个回答
6
最简单的方法是这样:
if __name__ == "__main__":
app = wx.App(0) #<--- or False
frame = MyFrame('My Frame')
frame.Show(True)
app.MainLoop()
这样做会把信息打印到标准输出,而不是wxPython的窗口里。
6
我对wxPython不太熟悉,不过如果你用pythonw.exe来运行你的脚本,而不是用python.exe,控制台窗口就不会出现。我想把脚本保存为script.pyw也可以达到这个效果。
6
其他人已经建议把文件名从 py 改成 pyw。如果你想要输出重定向的话,在创建 wx.App 类的时候把 redirect 设置为 True。
比如你可以查看这个链接:http://www.wxpython.org/docs/api/wx.App-class.html
这个 __init__
方法的定义是:
__init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True)
如果你把 redirect
设置为 True,并且给 filename
赋一个不是 None 的值,那么 sys.stdout
和 sys.stderr
的输出就会被重定向到这个文件名指定的文件里。需要注意的是,在 Windows 和 Mac 系统上,重定向的默认值是 True。如果 redirect==True
而 filename
是 None,那么输出会在一个弹出窗口中显示,这个窗口和你其他的界面是分开的。
这样做非常有用,特别是在调试的时候,你可以看到发生了什么,而不会让你的应用界面变得杂乱无章,尤其是在发布模式下。