使用Tkinter和cx_Freeze隐藏控制台窗口

时间:2011-04-02 14:55:45

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

我正在使用cx_freeze来冻结tkinter应用。当我运行exe时,我得到一个奇妙的USELESS控制台窗口以及我的tkinter GUI。

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

我见过以下的主题:

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

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

7 个答案:

答案 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