【问题标题】:Getting rid of Python console in wxPython under Windows [duplicate]在 Windows 下摆脱 wxPython 中的 Python 控制台 [重复]
【发布时间】:2010-11-21 14:39:25
【问题描述】:

可能重复:
How can I hide the console window in a PyQt app running on Windows?

如何摆脱在 Windows 中运行 wxPython 程序时显示为标准输出的控制台?

【问题讨论】:

  • 嗨,亚历克斯。我遇到了类似的问题,但问题发生在我尝试使用 cx_Freeze 冻结它之后。你是如何运行这个文件的?谢谢

标签: python windows console wxpython windows-console


【解决方案1】:

其他人已经建议将 py 重命名为 pyw。 如果您在创建 wx.App 类时改为引用输出重定向 pass 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 和文件名不同于无,sys.stdoutsys.stderr 将被重定向到文件名。请注意,在 Windows 和 Mac 上,重定向默认值为 True。如果redirect==True and filename is None,输出将打印在与其他框架不同的弹出窗口中。 这非常有用,因此在调试时您可以跟踪正在发生的事情,同时不会在发布模式下将用户界面与应用的内部结构弄得一团糟。

【讨论】:

  • 我不确定在使用 GUI 运行 Python 应用程序时,输出重定向与打开的控制台窗口有何关系。你能解释一下吗?
【解决方案2】:

不熟悉 wxPython,但如果您使用 pythonw.exe 而不是 python.exe 调用脚本,则不应出现控制台窗口。我相信将脚本另存为 script.pyw 也可以。

【讨论】:

  • 如果它是 .pyw 文件并且你的 python 在 windows 中关联,你可以双击该文件,它会在没有控制台的情况下启动
  • 我的所有 GUI 代码都在一个模块中,并且我有一个扩展名为 PY 的主脚本。我必须将所有文件重命名为 PYW 吗?甚至 init.py 文件?
【解决方案3】:

最简单的方法:

if __name__ == "__main__":
    app = wx.App(0) #<--- or False
    frame = MyFrame('My Frame')
    frame.Show(True)
    app.MainLoop()

这将打印到标准输出而不是 wxPython 窗口。

【讨论】:

  • 这很好,因为当您在应用程序加载时遇到错误时,wxWindow 在屏幕上闪烁然后消失,您无法阅读错误。添加 0 时,错误将打印在控制台上。
【解决方案4】:

我不知道 wxPython,但解决方案可能就像使用 pythonw.exe 来运行程序而不是 python.exe 一样简单。

【讨论】:

  • 同样,将你的文件重命名为whatever.pyw(而不是what.py),这样当你点击它时,它会启动pythonw.exe而不是python.exe
猜你喜欢
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
  • 2022-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-09
  • 2011-11-08
相关资源
最近更新 更多