Flet
Flet 是一个纯 Python 跨平台 UI 框架,无需前端经验即可构建 Web、桌面与移动应用。基于 Flutter 渲染,提供 150+ 内置控件、声明式 UI、内置打包与测试能力,一套代码覆盖六大平台。
爱鲜报评分
0 人评分
17k
星数
否
中文
Python
主语言
是
活跃
104
贡献者
人工分析
EDITORIAL推荐理由
Flet 让 Python 开发者无需学习 Dart、Swift、Kotlin 或前端技术栈,就能把脚本升级为可发布的跨平台应用,极大降低了 GUI 与移动端开发门槛。它内置打包与集成测试能力,并支持在浏览器中通过 Pyodide 直接运行 Python,配合 AI 助手与 MCP 服务,开发体验现代且完整。对于想快速做内部工具、数据看板或原型验证的团队,是性价比很高的选择。
适用场景
- 用 Python 快速开发跨平台桌面工具与内部应用
- 将数据分析脚本封装为带界面的可视化看板
- 开发需要在 iOS/Android 上运行的 Python 移动应用
- 在浏览器中运行或分享 Python 交互式应用
- 为教学、演示与原型验证快速搭建 UI
优点
- 纯 Python 开发,无需前端与原生语言经验
- 一套代码覆盖 Web、桌面、移动共六大平台
- 150+ 内置控件,支持 Material 与 Cupertino 风格
- 内置 flet build 打包与 pytest 集成测试能力
- 可在浏览器用 Pyodide 运行,无需 Python 服务端
缺点
- 底层依赖 Flutter,包体与运行时体积相对较大
- 深度自定义控件或平台集成仍需了解 Flutter 生态
- 移动端生态与成熟原生框架相比仍较年轻
- 复杂动画与高性能场景可能受服务端驱动模型限制
Flet 是什么
Flet 是一个用纯 Python 构建跨平台应用的框架。你只需要写 Python,就能把应用运行在 iOS、Android、Windows、macOS、Linux 和 Web 上,不需要 Dart、Swift、Kotlin、HTML 或 JavaScript 经验。
它的界面由 Flutter 渲染,但开发者面对的是 Python API,因此对没有前端背景的 Python 开发者非常友好。
核心特性
一套代码,六大平台
界面与业务逻辑全部用 Python 编写,同一份代码可打包为桌面应用、移动应用或 Web 应用。
150+ 内置控件
提供布局、按钮、表单、导航、对话框等常用控件,支持 Material 与 Cupertino 风格,可自定义颜色、字体与主题。
声明式与命令式两种写法
可以把界面拆成可复用组件,让状态变化自动驱动 UI 更新;也可以直接修改控件属性,按传统命令式方式编写。
移动端可用 Python 生态
在移动应用中使用 NumPy、pandas、Pillow、cryptography 等库,官方为 iOS 与 Android 提供预编译二进制包,省去自行编译原生依赖的麻烦。
浏览器与服务器两种运行方式
- 借助 Pyodide 与 WebAssembly,Python 可直接在浏览器中运行,无需服务端;
- 也可以把 Python 代码放在服务器上,向浏览器推送实时 UI 更新。
内置打包与测试
使用 flet build 打包桌面、移动或 Web 应用,依赖、图标与平台配置写在 pyproject.toml 中。配合 pytest 可编写集成测试,通过 flet test 在打包后的应用上模拟点击、输入并校验用户流程。
可扩展与可访问
可以用 Python 组合已有控件构建自定义控件,也可以封装 Flutter 包来扩展 UI 与平台能力。同时支持屏幕阅读器标签、提示、快捷键与语义调试。
AI 辅助开发
可以在 Flet Studio 中借助 AI 智能体创建应用,也可以把编码助手接入 Flet MCP 服务,获取对应版本的 API 信息、示例与图标。
快速上手示例
一个简单的计数器应用:
import flet as ft
def main(page: ft.Page):
counter = ft.Text("0", size=50, data=0)
def increment_click(e):
counter.data += 1
counter.value = str(counter.data)
page.floating_action_button = ft.FloatingActionButton(
icon=ft.Icons.ADD, on_click=increment_click
)
page.add(
ft.SafeArea(
expand=True,
content=ft.Container(
content=counter,
alignment=ft.Alignment.CENTER,
),
)
)
ft.run(main)
安装并运行:
pip install 'flet[all]'
flet run counter.py
默认会打开原生桌面窗口;加上 --web 参数即可在浏览器中运行同一应用。
适合谁使用
- 想把 Python 脚本变成带界面的桌面工具的开发者;
- 需要快速做数据看板、内部工具或原型的团队;
- 希望用 Python 开发移动应用、又不想学原生语言的开发者;
- 想在浏览器中分享可交互 Python 应用的教学与演示场景。
小结
Flet 把「Python 写逻辑 + Flutter 渲染」结合起来,用较低的学习成本换来跨平台交付能力。对于以 Python 为主、又需要图形界面的项目,是一个值得尝试的方案。
评论
- 暂无评论,来写第一条吧。