【问题标题】:Hide console window with Tkinter and cx_Freeze使用 Tkinter 和 cx_Freeze 隐藏控制台窗口
【发布时间】:2011-07-28 06:55:30
【问题描述】:

我正在使用 cx_freeze 冻结 tkinter 应用程序。当我运行 exe 时,我会得到一个非常无用的控制台窗口以及我的 tkinter GUI。

我想移除/隐藏这个无用的黑色窗口。

我看到了以下建议:

root = tkinter.Tk()
root.withdraw()

上面的代码与我想要的相反。它隐藏了我的 GUI,而无用的黑色窗口仍然存在。我希望它是相反的方式。

【问题讨论】:

    标签: python-3.x tkinter cx-freeze


    【解决方案1】:

    我记得在 Windows 上的某处读到,如果您将文件扩展名指定为 .pyw,它将使用 pythonw.exe 启动(没有控制台窗口)。这对你有用吗?

    【讨论】:

    • 您可以尝试使用pythonw.exe 而不是python.exe 手动启动您的程序,看看是否有帮助?
    • 更改扩展名对我有用! (win 7 pro 64x, Python 3.3) 感谢 Noufal Ibrahim
    【解决方案2】:

    这个question 非常相似,但用于wxPython 和cx_Freeze。幸运的是,控制台的外观可以通过构建脚本而不是源代码来配置。借用前两个答案,诀窍是在您的 cx_Freeze 构建脚本中设置 base 变量:

    import sys
    from cx_Freeze import setup, Executable
    
    base = None
    if (sys.platform == "win32"):
        base = "Win32GUI"    # Tells the build script to hide the console.
    
    # <The rest of your build script goes here.>
    

    这里是相关的documentation(虽然它没有明确提到base控制控制台选项)。

    另外,仅仅因为它很有趣,answer 对不同的问题解决了创建带有或不带有控制台模式选项的 GUI 应用程序的问题,我认为这非常酷。

    【讨论】:

    • 这个答案有效,但是您必须在 setup.py 文件中添加 base=base in executables= 。有关示例,请参见下面的 VICTOR 答案。
    【解决方案3】:

    完全按照加里说的做,然后:

    setup(name="ur package name",
             version="ur package version",
             description="as above",
             executables=[Executable("ur_script.py", base=base)]
    

    这将起作用 cx_Freeze

    【讨论】:

      【解决方案4】:

      如果使用 pyinstaller,请使用 pyinstaller-gui.py 在 Windows 命令行类型中

      python pyinstaller-gui.py

      这将首先显示“请仅使用 'pyinstaller.py'。GUI 未维护。”更改代码 l'il 位,您将能够运行它。

      它会弹出一个窗口来选择你的脚本和一些复选框。检查'无控制台(仅限 Windows)

      就是这样。你完成了!

      另一个选项:在构建时使用 --noconsole 选项。即:

      python pyinstaller.py --noconsole yourscript.py

      【讨论】:

        【解决方案5】:

        我今天遇到了同样的问题

        我用来编译我的python程序的是py2exe,修复非常简单,修改安装文件如下所示。我的界面是用 Tkinter 写的

        修改“setup.py”py2exe 脚本:

        旧 Python 代码:

        from distutils.core import setup
        import py2exe
        setup(console=['app.py'])
        

        新的 Python 代码:

        from distutils.core import setup
        import py2exe
        setup(windows=['app.py'])
        

        在我执行此操作并重新运行我的设置脚本后,应用程序已加载且未显示控制台窗口。唯一的问题是,如果您的应用程序向控制台窗口发送打印命令,您将看不到主题。我希望这会有所帮助。

        【讨论】:

        • 为什么认为对我不起作用?我已经尝试了我能找到的各种窗口/控制台。
        • 但问题是关于 cx_freeze..!!
        【解决方案6】:

        我假设“黑色窗口”指的是终端窗口。为了阻止它弹出,请将您的文件保存为 .pyw 扩展名而不是 .py

        【讨论】:

          【解决方案7】:

          对我来说,使用选项 --base-name Win32GUI 有效。这是一个例子:

          cxfreeze your_python_file.py --base-name Win32GUI --target-dir your_target_dir

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-07-22
            • 2012-10-14
            • 2011-04-03
            • 2023-03-28
            • 1970-01-01
            • 2022-10-12
            • 2011-08-31
            相关资源
            最近更新 更多