一、Flet 是什么?
在过去的很长一段时间里,构建用户界面(UI)往往是 Python 开发者的'短板'。虽然我们有 Tkinter、PyQt、wxPython 等 GUI 工具,但它们或过于陈旧、或依赖庞大的桌面框架,难以适应现代前端的体验。而 Web 前端则需要掌握 HTML/CSS/JavaScript,学习成本高、调试复杂。
于是,Flet 出现了。
Flet 是一个使用 Python 构建现代 Web、桌面和移动应用的框架,它的目标是让开发者只使用 Python 就可以完成跨平台 UI 应用的开发。
简而言之:像写命令行脚本一样用 Python 写 Web 前端界面,跨平台自动适配。
1.1 核心特性
- 📦 纯 Python 编写 UI,无需 HTML/CSS/JS
- 🖥️ 支持 Web、桌面和移动端运行
- 🔄 实时热更新、调试体验流畅
- 🧱 内建 Material Design 组件体系
- 📡 支持多用户会话(多客户端连接)
- ☁️ 兼容 Cloud Run、Docker、Streamlit 部署方式
- ❤️ 社区活跃,开源免费(MIT License)
Flet 是基于 Flutter 的桥接层,将 Flutter 的 UI 渲染能力通过 WebSocket 绑定给 Python,使得 Python 可以驱动 Flutter 引擎生成的 UI,非常轻巧且现代化。
二、安装与快速上手
2.1 安装方式
使用 pip 安装非常方便:
pip install flet
安装后可运行:
python app.py
2.2 最简单的 Hello World 示例
import flet as ft
def main(page: ft.Page):
page.title = "Hello, Flet!"
page.add(ft.Text("Welcome to Flet!"))
ft.app(target=main)
保存为 app.py,运行后会自动打开浏览器或桌面窗口,并显示文字。
三、Flet 架构原理
3.1 底层技术栈
Flet 并不是直接用 Python 渲染前端,而是通过以下方式构建:
- 前端:Flutter 引擎生成的 Web 页面,使用 Dart 渲染 Material UI。
- 后端:Python 作为控制逻辑,构造组件、处理事件。
- 通信机制:WebSocket + JSON 数据协议连接前后端。
- 运行环境:支持浏览器、Electron 桌面、移动端 WebView。
3.2 工作流程
- 启动 Python 程序;
- 构造 UI 组件树(Page、Container、Text、Button…);
- 启动 WebSocket 服务;
- 前端连接后解析 UI 树并渲染;
- 用户交互事件通过 WS 返回 Python;
- Python 处理逻辑并更新 UI。

