我正在使用 cx_freeze 冻结 tkinter 应用程序。当我运行 exe 时,我会得到一个非常无用的控制台窗口以及我的 tkinter GUI。
我想删除/隐藏这个无用的黑色窗口。
我看到了建议以下内容的线程:
root = tkinter.Tk()
root.withdraw()
上面的代码与我想要的相反。它隐藏了我的 GUI,而无用的黑色窗口仍然存在。我希望反过来。
我正在使用 cx_freeze 冻结 tkinter 应用程序。当我运行 exe 时,我会得到一个非常无用的控制台窗口以及我的 tkinter GUI。
我想删除/隐藏这个无用的黑色窗口。
我看到了建议以下内容的线程:
root = tkinter.Tk()
root.withdraw()
上面的代码与我想要的相反。它隐藏了我的 GUI,而无用的黑色窗口仍然存在。我希望反过来。
我记得在 Windows 上的某处读到,如果您将文件扩展名指定为.pyw
,它将使用 pythonw.exe 启动(没有控制台窗口)。那对你有用吗?
这个问题非常相似,但针对 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 应用程序的问题,我认为这非常酷。
就像加里说的那样做,然后:
setup(name="ur package name",
version="ur package version",
description="as above",
executables=[Executable("ur_script.py", base=base)]
这将起作用 cx_Freeze
我今天有同样的问题
我用来编译我的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'])
在我这样做并重新运行我的设置脚本之后,应用程序加载并且没有显示控制台窗口。唯一的问题是,如果您的应用程序向控制台窗口发送打印命令,您将看不到主题。我希望这有帮助。
如果使用 pyinstaller 使用 pyinstaller-gui.py 在 Windows 命令行类型
python pyinstaller-gui.py
这将首先说“请仅使用 'pyinstaller.py'。 Gui 未维护。” 更改代码 l'il 位,您将能够运行它。
它会弹出一个窗口来选择你的脚本和一些复选框。检查'无控制台(仅限 Windows)
就是这样。你完成了!
另一种选择:在构建时使用 --noconsole 选项。IE:
python pyinstaller.py --noconsole yourscript.py
我假设“黑色窗口”指的是终端窗口。为了禁止弹出,请将您的文件保存为 .pyw 扩展名而不是 .py
对我来说,使用该选项--base-name Win32GUI
有效。这是一个例子:
cxfreeze your_python_file.py --base-name Win32GUI --target-dir your_target_dir