我正在使用cx_freeze来冻结tkinter应用。当我运行exe时,我得到一个奇妙的USELESS控制台窗口以及我的tkinter GUI。
我想删除/隐藏这个无用的黑色窗口。
我见过以下的主题:
root = tkinter.Tk()
root.withdraw()
上面的代码与我想要的完全相反。它隐藏了我的GUI,而无用的黑色窗口仍然存在。我希望它是另一种方式。
答案 0 :(得分:14)
我记得在Windows上如果您指定文件扩展名为.pyw
,则会在某处播放,它将使用pythonw.exe启动(不带控制台窗口)。这对你有用吗?
答案 1 :(得分:9)
这个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应用程序的问题,我认为这非常酷。 子>
答案 2 :(得分:5)
就像加里所说的那样,然后:
setup(name="ur package name",
version="ur package version",
description="as above",
executables=[Executable("ur_script.py", base=base)]
这将起作用cx_Freeze
答案 3 :(得分: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'])
执行此操作并重新启动我的安装脚本后,应用程序已加载并且未显示控制台窗口。唯一的问题是,如果您的应用程序将打印命令发送到控制台窗口,您将看不到主题。我希望这会有所帮助。
答案 4 :(得分:1)
我假设“黑色窗口”指的是终端窗口。要禁用弹出窗口,请将文件另存为.pyw扩展名而不是.py
答案 5 :(得分:1)
如果使用pyinstaller,请使用pyinstaller-gui.py 在Windows命令行类型
中python pyinstaller-gui.py
首先会说“请使用'pyinstaller.py'。不保留Gui。”更改代码l'il位,您将能够运行它。
它会弹出一个窗口来选择你的脚本和一些checkboxex。检查'无控制台(仅限Windows)
就是这样。你完成了!
另一个选择:在构建时使用--noconsole选项。即:
python pyinstaller.py --noconsole yourscript.py
答案 6 :(得分:0)
对我来说,使用选项--base-name Win32GUI
有效。这是一个例子:
cxfreeze your_python_file.py --base-name Win32GUI --target-dir your_target_dir