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

Rhy*_*hys 9 tkinter cx-freeze python-3.x

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

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

我见过线程提示如下:

root = tkinter.Tk()
root.withdraw()
Run Code Online (Sandbox Code Playgroud)

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

Nou*_*him 14

我记得在某个地方,如果你指定你的文件扩展名.pyw,它将在某个地方读取,它将使用pythonw.exe启动(没有控制台窗口).那对你有用吗?

  • 它对我来说只是改变了扩展!(win 7 pro 64x,Python 3.3)感谢Noufal Ibrahim (2认同)

gar*_*ary 10

这个问题非常相似,但对于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.>
Run Code Online (Sandbox Code Playgroud)

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

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


小智 5

完全就像加里所说的那样:

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

这将适用于cx_Freeze