使用 CLI 转换 Tkinter 应用程序

Posted

技术标签:

【中文标题】使用 CLI 转换 Tkinter 应用程序【英文标题】:Converting Tkinter app withoul CLI 【发布时间】:2017-10-17 16:14:21 【问题描述】:

所以我创建了一个 tkinter 程序并将其保存为 .pyw 文件,这样当我运行它时它不会显示 CLI 背景窗口,但是当我使用 py2exe 和 cx-Freeze 编译它并运行它显示的可执行文件时CLI 提示符。如何将其编译成可执行文件,运行时不会显示黑窗?

【问题讨论】:

【参考方案1】:

在 Windows 中,您可以使用以下命令隐藏 CLI:

base = Win32GUI

例如在这个脚本中:

import sys
from cx_Freeze import setup, Executable

build_exe_options = "packages": ["os"], "excludes": []
base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(  name = "guifoo",
        version = "0.1",
        description = "My GUI application!",
        options = "build_exe": build_exe_options,
        executables = [Executable("guifoo.py", base=base)])

编辑:

您提到未包含媒体文件。这是很正常的,您必须手动指定这些。虽然有很多方法可以做到这一点,但最简单的方法是使用 include_files 参数。这相当简单,可以这样完成:

import sys
from cx_Freeze import setup, Executable

build_exe_options = "packages": ["os"], "excludes": [], "include_files":["Path/To/Media/Files.jpg"]
base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(  name = "guifoo",
        version = "0.1",
        description = "My GUI application!",
        options = "build_exe": build_exe_options,
        executables = [Executable("guifoo.py", base=base)])

使用此方法,您可以像这样包含整个文件夹:

"include_files":["path/to/folder"]

或像这样的单个文件(如上所示):

"include_files":["path/to/file.png"]

【讨论】:

谢谢西蒙。它确实有效,但出了点问题。构建成功,但没有复制所有媒体文件,所以我必须手动移动它。顺便问一下,如果我想使用 py2exe 而不是 cx_Freeze,你能帮帮我吗? @LeeYou 不,对不起,我不知道 py2exe(它也只适用于 python 2)还有什么是要包含的媒体文件的名称和文件路径?一旦你告诉我,我会编辑以包含这些内容。 感谢西蒙的帮助。

以上是关于使用 CLI 转换 Tkinter 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

是否有 Tkinter / 网格几何图形的 GUI 设计应用程序? [关闭]

C++/cli:无法转换参数 1

带有tkinter输入框的动态变量

人工智能交互系统界面设计(Tkinter界面设计)

ttk tkinter 多帧/窗口

调试时在 Vue-CLI 应用程序中禁用转译为 ES5