Python中跨平台的Kivy和Toga(Beeware项目)之间的区别

Posted

技术标签:

【中文标题】Python中跨平台的Kivy和Toga(Beeware项目)之间的区别【英文标题】:Difference between Kivy and Toga (Beeware project) for Cross platform in Python 【发布时间】:2018-02-07 06:44:42 【问题描述】:

我知道在 Python 中构建跨平台的唯一方法是 Kivy,但我最近听说了 Beeware 项目和这个名为 Toga 的工具。据我所知,它仍处于早期阶段,很多人也不熟悉它,但网站上有一些基本教程。它看起来很有希望,但我不知道它的未来以及如果我开始研究它可能面临的问题,因为它现在可能有很多错误。我在文档上读到 Toga 可以让你构建原生跨平台应用程序,Kivy 应用程序不是原生的吗?它们是否像混合应用程序一样,就像您在 Phonegap 上构建的应用程序一样?谢谢

【问题讨论】:

【参考方案1】:

Toga 通过将 Toga api 映射到不同系统上的本机平台小部件来实现其 gui。这意味着这些应用程序将自动看起来和行为类似于该系统中的其他“本机”应用程序。相比之下,Kivy 使用 opengl 进行绘图,使用自己的小部件工具包。这意味着默认情况下,它在所有不同平台上的外观和行为都完全相同。您可以对其进行自定义,但实际上很难获得真正像另一个框架一样工作的东西。

这两种方法都有优点和缺点。 Kivy 非常灵活且可移植,因为您几乎可以在任何地方使用 opengl,而更难的部分可能是编译 Kivy 和 Python 本身。另一方面,Toga 的方法是获得真正像本机应用程序一样的东西的唯一方法,并且还可能回避一些 Kivy 问题,例如在 android 上启动相对较慢。也就是说,与 Kivy 的绘图 API 相比,我不确定是否需要显式地包装不同的小部件意味着它可能不那么灵活,它基本上可以在没有特殊平台支持的情况下实现任何东西。

【讨论】:

感谢您的回答。你用过Toga吗?用它编译过程是不是简单多了? toga-android项目好像是作者在GitHub上存档的。这是否意味着它已被放弃并且 Android 不再是 Toga 支持的目标? 不,我认为 toga-android 只是为 Android 构建的一种特定方式,已被通过 voc 的 Java 转译取代。

以上是关于Python中跨平台的Kivy和Toga(Beeware项目)之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

Python之深入解析如何使用Python Kivy实现一个“乒乓球”游戏

Python Kivy 中文教程:安装(Windows)

5 分钟带你入门 kivy

python开发安卓app可行吗

如何Python写一个安卓APP

七个python gui图形界面开发框架