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