Kivy 移动端 GUI —— 在手机上写跨平台 App
为什么 Kivy 是移动端首选
Kivy 本身就是为跨平台 GUI 设计的——同一套代码可以跑在 Android、iOS、Windows、macOS、Linux 上。Pydroid 3 内置了完整的 Kivy + SDL2 backend,是目前在 Android 上体验最接近「原生 GUI 开发」的 Python 路线。
其他 GUI 框架在 Android 上要么没有 backend(Qt/Tk 都没有),要么是 Web 技术栈(Remi),Kivy 是唯一能在 Pydroid 里真正弹出一个原生窗口的方案。
安装
在 Pip 面板的 Quick Install 区找 Kivy,一键安装。需要同时装 Matplotlib 的话,官方提供了「Matplotlib Kivy 支持」的一键配置入口——装完后 plt.show() 自动走 Kivy backend,弹出的图窗就是一个 Kivy 窗口。
Pydroid 自动检测 Kivy
你不需要手动设置 backend——Pydroid 会通过以下三种方式自动判断脚本需要以 Kivy 模式运行:
- 代码里包含
import kivy或from kivy import ... - 代码开头有一个注释指令
#Pydroid run kivy - 你在 Run 之前手动在 Interpreter 设置里指定了 Kivy 模式
检测到后 Pydroid 会自动切换到 Kivy backend 启动解释器,App().run() 会在手机屏幕上弹出 Kivy 窗口。
典型 Kivy 程序结构
from kivy.app import App
from kivy.uix.button import Button
class MyApp(App):
def build(self):
return Button(text='Hello Kivy!')
MyApp().run()
点 Run → 手机屏幕上弹出一个窗口,里面有一个按钮——这就是一个能在手机上跑的 Python GUI App。
用 Kivy 做什么
| 场景 | 说明 |
|---|---|
| 移动端 App 原型 | 写完代码直接 Run,手机就是测试设备——这在桌面开发里需要打包成 APK 再安装,快得多 |
| 教学演示 | 用 Kivy 做可视化教学(比如可视化排序算法、递归过程),比纯文字直观 |
| 数据展示 | 结合 Matplotlib Kivy backend,把图表嵌到 Kivy GUI 里做个简单的仪表板 |
| 小游戏原型 | 用 Kivy 的 Canvas 或结合 Pygame 做简单的 2D 小游戏 |
移动端 Kivy 的注意事项
- 触摸事件:Kivy 默认接收触摸输入,按钮点击、滑块拖动都能工作——这比桌面端的鼠标/键盘更适合手机
- 屏幕适配:Kivy 是自绘的,默认会填满整个手机屏幕。用
kv语言写布局比在代码里硬编码坐标灵活得多 - 后台限制:Android 系统对后台窗口有严格限制,Kivy App 切到后台后可能被系统暂停甚至杀死,不要指望它做长时间的后台运行任务