9

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

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

我看到了建议以下内容的线程:

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

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

4

7 回答 7

14

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

于 2011-04-02T15:04:08.973 回答
11

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

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.>

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

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

于 2012-07-07T11:17:43.740 回答
5

就像加里说的那样做,然后:

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

这将起作用 cx_Freeze

于 2012-12-11T06:57:42.990 回答
2

我今天有同样的问题

我用来编译我的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'])

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

于 2011-11-14T18:11:42.063 回答
2

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

python pyinstaller-gui.py

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

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

就是这样。你完成了!

另一种选择:在构建时使用 --noconsole 选项。IE:

python pyinstaller.py --noconsole yourscript.py

于 2013-06-13T16:35:39.233 回答
1

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

于 2012-07-11T21:22:35.847 回答
1

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

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

于 2015-03-11T07:52:31.360 回答