在Windows下wxPython中去除Python控制台

3 投票
4 回答
6051 浏览
提问于 2025-04-15 13:46

可能重复的问题:
如何在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.stdoutsys.stderr 的输出就会被重定向到这个文件名指定的文件里。需要注意的是,在 Windows 和 Mac 系统上,重定向的默认值是 True。如果 redirect==Truefilename 是 None,那么输出会在一个弹出窗口中显示,这个窗口和你其他的界面是分开的。

这样做非常有用,特别是在调试的时候,你可以看到发生了什么,而不会让你的应用界面变得杂乱无章,尤其是在发布模式下。

撰写回答