如何在 Python 中为命令行应用程序制作 GUI?

How to make a GUI for command-line application in Python?


我是 Python 的初学者,正在尝试使用 Python 制作命令行应用程序。

我已经开发了这个程序,但是我看到我的程序在 cmd.exe 中执行,这似乎是那种程序的默认设置。
但我想要一个更好的 GUI,比如 Windows 终端。但问题是,Windows 终端并未像 cmd.exe 那样安装在所有 Windows 计算机中 cmd.exe

因此,我想请您建议任何制作 GUI 的方法或将 Windows 终端与我的 Python 程序捆绑在一起的方法。

感谢您的帮助。

所以首先我们需要了解一些术语。您比较 Windows 终端和 cmd.exe,但它们实际上是两个完全不同的 类型 应用程序。 CMD是旧的Windowsshell。它 运行 位于 终端仿真器 (a.k.a。终端)中。在 Windows:

下可以 运行 有多个终端
  • 默认情况下,在 Windows 10 中,它 运行 在旧版 Windows 控制台主机 中。这是 Windows.
  • 将近 30 年(也许更多)的旧航站楼
  • CMD 也可以 运行 在 Windows 终端 中,Microsoft 的替代终端可安装在 Windows 10 或 Windows11.在Windows11下,可以成为Windows.
  • 的默认终端

当您要求 Windows 运行 一个 console/terminal 应用程序时,例如您的 Python CLI 应用程序,Windows 总是 运行 它在其默认终端中——在 Windows 10 下,它始终是 Windows 控制台主机。在 Windows 11 下,它可能是 Windows 控制台主机或 Windows 终端,具体取决于用户配置。

但也有多个其他终端可以 运行 您的 CLI Python 应用 Windows:

一些比较流行的是:

  • ConEmu
  • 命令
  • MobaXterm

您可以找到 this blog post 中列出的其他人。

所以实际上不是您的应用 运行 在 CMD 中,而是您的应用 运行 在 Python 中(解释器 ), 在 CMD 下是 运行ning (the shell), 在 Windows Console Host 下是 运行ning (默认终端模拟器).

注意Python也可以在下运行other shells (PowerShell, Linux shell s 在 WSL、Nushell 等下)。这些 shell 也可以在上述任何终端中 运行。或者您的 Python CLI 应用程序可以 运行 作为终端内的 top-level。

好的,现在我们已经建立了一些基础...

But I would like a finer GUI, like that of Windows Terminal.

有点不清楚你的意思,但除了尝试打包 Windows 终端外,可能还有其他解决方案。旧版控制台和 Windows 终端应该具有类似的功能 适合您的应用程序 。 Windows 终端为 用户 添加选项卡之类的东西,但您无法在您的应用程序中控制它。 Console Host 和 WT 都可以配置相同的 Windows 字体。

有一件事你可以在Windows终端中做而你不能在控制台主机中做的是定义一个配置文件您的应用程序,包括您希望它在 运行 下的主题、背景图像等。也许这就是您所要求的,但您没有指定这些功能。

suggest any methods to make the GUI

如果您希望在 Python 中创建 GUI,请考虑使用 GUI Framework 而不是 CLI 应用程序来构建它。您甚至可以在 Python 中编写一个终端仿真器,但这可能有点矫枉过正。

or a method to bundle up Windows Terminal with my Python program.

这可能不是个好主意。 Windows 终端作为 Microsoft Store 应用程序安装时效果最佳(a.k.a。UWP、Modern 等)。无法将 Microsoft Store 应用程序与其他应用程序捆绑在一起;就像您无法从 iOS 上的另一个应用程序自动安装另一个 Apple App Store 应用程序一样。也可以 install/run Windows 终端作为传统 .exe,但这不是默认(或支持)方式。

您可以考虑以下内容:

  • 让你的主要 Python 应用程序成为一个“启动器”,检查是否安装了 Windows 终端,也许是通过寻找现有的 wt.exe.

  • 如果安装了 Windows 终端:

    • 检查相应目录中是否存在您的应用程序 JSON fragment(请参阅 link)。如果它不存在,请安装它。
    • 通过调用类似 wt.exe new-tab --profile <your_app_profile> 的方式启动您的应用程序,以使用您在 JSON 片段中定义的配置文件在 Windows 终端中启动或打开一个新选项卡。
  • 如果Windows终端没有安装:

    • 建议用户安装。打开 Microsoft Store link 即可。
    • 如果他们选择不这样做,您的启动器仍应启动应用程序的 CLI 部分——Windows 将使用默认终端,应该是 Windows 控制台主机。
  • 单独提供 运行CLI 部分的说明(没有启动器),以便其他终端仿真器的用户可以 运行 在他们喜欢的环境中使用它。