Toga 是 BeeWare 的 Python 原生操作系统图形用户界面工具包。
Why Toga?
Toga 并不是世界上第一个 widget 工具包,还有其他几十种选择。 选择。那么,为什么要创建一个新的呢?
本地小部件 - 非主题
Toga 使用本地系统部件,而非主题。当你看到 Toga 应用程序 运行时,它不仅看起来像一个本地应用程序,而且就是一个本地应用程序。 在通用的 对开发者来说,在通用部件集的顶部应用受操作系统启发的主题是实现跨平台目标的一种简便方法。 目标,但却给最终用户留下了麻烦。
使用主题部件集构建的应用程序很容易识别--它们的行为与其他应用程序不太一样。 它们的行为与其他应用程序不太一样。部件 看起来不太一样,或者在 macOS 应用程序的窗口上有一个菜单栏。 应用程序的窗口上有菜单栏。主题可以做到很接近,但总会有蛛丝马迹。
此外,本地部件总是比主题通用部件更快。 部件更快。毕竟,你使用的是经过调整和优化的本地系统功能,而不是在其上分层的绘图引擎。 经过调整和优化的本地系统能力,而不是在通用 widget 上分层的绘图引擎。 通用部件。它们还继承了本地平台的所有 辅助功能,如支持屏幕阅读器和自适应字体大小。 自适应字体大小。
抽象出广泛的概念
不过,仅仅看起来像本地应用程序是不够的,你还需要 感觉像本地应用程序。
如果你编写的是 Windows 应用程序,"文件 "菜单下的 "退出 "选项是合理的。 但如果你使用的是 OS X,则完全不合时宜--"退出 "选项应放在应用程序菜单下。 退出 "选项应放在应用程序菜单下。
此外,开发人员为什么要对 "退出 "选项的位置进行编码呢? 选项的位置?世界上每个应用程序都必须有一个退出选项,那么为什么 为什么小部件工具包不提供预装的退出选项呢? 预装退出选项?
虽然 Toga 100% 使用本地系统部件,但这并不意味着 Toga 只是系统部件的一个包装。在可能的情况下,Toga 试图 抽象出更广泛的概念,作为构建 GUI 应用程序的广泛概念,并为此构建一个应用程序接口。因此,每个 Toga 应用程序都有一套基本的 菜单选项--退出、关于等--都在你所期望的位置。 在原生应用程序中的位置。
说到 widget,有时抽象的概念很简单--毕竟,无论在哪个平台上,按钮就是按钮。 毕竟,无论你在哪个平台上,按钮就是按钮。但其他 部件可能就不那么简单了。Toga 应用程序接口旨在 是一套实现用户界面目标的机制,而不是一个字面意义上的 部件集。
Python 本机
大多数 widget 工具包都是从 C 或 C++ 层开始的,然后被其他语言封装。 被其他语言封装。因此,你最终得到的 API 就像 C 或 C++。
Toga 从设计之初就是一个 Python 原生 widget 工具包。这意味着该 API 能够利用生成器和上下文管理器等语言级特性 生成器和上下文管理器等语言级特性。 库的封装程序无法做到的(至少不容易做到)。
Toga 可在 Python 3 上运行。它不能在 Python 2 上运行。
pip install,仅此而已
Toga 的目标是,只需安装 pip 即可使用。它不 不需要编译 C 扩展。无需安装 二进制支持库。无需更改系统路径和环境变量。 环境变量。只需安装它、导入它,然后开始编写(或 运行)代码。
拥抱移动
10 年前,跨平台 widget 工具包意味着 可用于 Windows、OS X 和 Linux。如今,移动计算 更为重要。但尽管如此,移动平台上的 在移动平台上进行 Python 编程,跨平台移动 编码仍然难以实现。Toga 的目标就是纠正这一点。
如何帮助
所以,为什么它被称为 "Toga"?
入乡随俗。罗马人穿什么?托加 (Toga)!