python - Kivy是如何做到跨平台兼容的?

标签 python python-3.x user-interface kivy cross-platform

是什么让 Kivy 能够跨平台兼容?

换句话说,同一个Kivy源代码如何在桌面、iOS、Android等多种硬件平台上生成应用程序?

最佳答案

我想实现跨平台兼容性有两个关键的极端:

  1. 通过在每个平台上以不同的方式实现事物,以便 Kivy 在每个平台上运行不同的代码,但通过使输出看起来相同来向用户隐藏这种差异。
  2. 通过使用所有不同平台都支持的外部 API,这样 Kivy 自己的代码基本上是相同的,平台自己会负责让它工作。

Kivy 两者都有一点,但特别是所有绘图都使用第二种类型的 OpenGL ES2:Kivy 的所有绘图逻辑在所有支持的平台上几乎相同。当然还有其他类型,例如在计算像素密度等显示指标时,Kivy 在每个平台上使用不同的方法,但不会向用户公开任何细节。

当然,从整体上考虑事情会更加微妙。例如,Kivy 使用 SDL2 作为创建窗口、设置其大小/pos 处理暂停/恢复等的库,因此 Kivy 的代码在这里属于第二种类型,因为它在每个平台上都以相同的方式调用 SDL2。然而,SDL2 本身并不是平台原生的,而是第一种类型,在不同的平台上以不同的方式实现其 API,但在每个平台上向 Kivy 公开相同的 API。

关于python - Kivy是如何做到跨平台兼容的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63551976/

相关文章:

iphone - 在 iPhone 上绘制屏幕缓冲区的最快方法

java - Android/Java 重复按钮点击

python - 服务中的桌面通知

python - 导入从同一目录导入的模块

python - pandas.DataFrame.drop 掉落了错误的标签

python - 无法立即停止\杀死 multiprocessing.Pool 产生的所有进程

python - 无法在 Mac Mavericks 上安装 python mysql 库

python - 在合并的 csv 文件中添加附加列

python - 如何在 to_json 中包含 Dataframe 的名称(Pandas)

javascript - 从具有多个按钮的模态返回一个值( react )