跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonSaaS大前端

Python 第三方库 Flet:一套代码构建跨平台桌面与 Web 应用

Flet 是基于 Flutter 渲染引擎的 Python UI 框架,允许开发者使用纯 Python 构建 Web、桌面及移动应用。它具有高性能、现代化 UI 和响应式布局优势,无需掌握 Dart。适用于快速开发企业内部工具、后台管理界面、实时仪表盘等场景。核心概念包括 Page 页面对象、控件系统、事件回调及响应式布局。支持热重载,内置 WebSocket。相比传统 GUI 库,Flet 性能更优,适合构建高交互应用。

t ag发布于 2026/2/4更新于 2026/9/76.1K 浏览

Flet 跨平台 Python UI 框架

Flet 是一个现代跨平台的 Python UI 框架,允许开发者使用纯 Python 构建 Web 应用、桌面应用(Windows/macOS/Linux)、移动应用(Android/iOS)。它基于 Flutter 渲染引擎,因此具有高性能、现代化 UI、响应式布局等优势,却无需掌握 Dart 或 Flutter,只需写 Python 即可。

Flet 特别适用于快速开发企业内部工具、后台管理界面、实时仪表盘、桌面应用原型等,被认为是'Python 世界的 Flutter'。

安装

pip install flet

常见应用场景

  1. 跨平台 GUI 开发(无需 Dart) 使用 Python 构建 Windows、macOS、Linux GUI 程序,界面效果与 Flutter 一致。

  2. Web 应用与管理后台 一套代码可直接在浏览器运行,适合制作管理后台、仪表盘、可视化面板。

  3. 移动应用原型开发 可部署到移动端(Android / iOS),适合作为快速验证 UI 的工具。

  4. 实时应用与仪表盘 内置 WebSocket 支持,适合动态数据更新,如实时监控、业务面板。

  5. 企业内部工具 无需前端技术栈,快速做出内部系统界面或小型业务工具。


核心概念

1. Flet 应用程序(Page)

Flet 使用 page 对象表示应用页面,包含:

  • 主题(light/dark)
  • 控件列表
  • 路由管理
  • 响应式布局
  • 事件回调执行环境

例如:

def main(page):
    page.title = "Hello Flet"

2. 控件(Controls)

类似 Flutter 小部件(Widgets),但用 Python 创建。 常用控件包括:

  • Text:文本
  • TextField:输入框
  • ElevatedButton:按钮
  • Row / Column:布局
  • Container:容器
  • Image:图像
  • DataTable:表格
  • Dropdown:下拉框
  • IconButton:图标按钮

Flet 控件均支持属性绑定与事件处理。

3. 事件回调(Events)

控件的事件通过 Python 函数处理,如:

def on_click(e):
    print("Clicked!")
button.on_click = on_click

支持:

  • 点击
  • 输入变化
  • 列表选择
  • 滑块调整
  • 路由变化
  • 文件上传事件等

4. 响应式布局(Responsive Layout)

基于 Flutter 的布局系统,可灵活适配桌面/网页/移动端:

  • Row
  • Column
  • ResponsiveRow
  • 自动拉伸、对齐、边距控制

5. 热重载(Hot Reload)

开发时可直接热重载 UI,而不必重启应用。


应用举例

例 1:最简单的窗口

import flet as ft

def main(page: ft.Page):
    page.add(ft.Text("Hello, Flet!"))
    ft.app(target=main)

例 2:按钮点击事件

import flet as ft

def main(page: ft.Page):
    def on_click(e):
        page.add(ft.Text("按钮被点击"))
    page.add(ft.ElevatedButton("点我", on_click=on_click))
    ft.app(target=main)

例 3:输入框与响应

import flet as ft

def main(page: ft.Page):
    name = ft.TextField(label="请输入姓名")

    def update_name(e):
        page.add(ft.Text(f"你好,{name.value}"))

    page.add(name, ft.ElevatedButton("确认", on_click=update_name))
    ft.app(target=main)

例 4:布局示例(Row + Column)

import flet as ft

def main(page: ft.Page):
    page.add(
        ft.Row([
            ft.Container(ft.Text("左"), width=100,),
            ft.Container(ft.Text("右"), width=100,)
        ])
    )
    ft.app(target=main)

例 5:运行 Web 模式

ft.app(target=main, view=ft.WEB_BROWSER)

常用函数与类速览

ft.app(target, view=None)

启动 Flet 应用。

  • 参数:target(主函数,接收 Page 对象)、view(窗口类型:桌面、Web、移动)。
  • 返回:无。

Page

Flet 应用主页面对象。

  • 常用属性:title(页面标题)、controls(控件列表)、route(当前路由)、theme_mode(主题模式)。
  • 常用方法:add()(添加控件)、update()(刷新页面)、go(route)(路由跳转)。

Controls(如 Text、Row、Button)

所有 UI 控件类型。参数包括文本内容、样式属性、事件回调等。返回控件对象。

Text(value)

显示文本控件。参数:value(字符串)。返回:Text 实例。

TextField(label=None)

文本输入框。参数:label(标签文字)。返回:TextField 实例。

ElevatedButton(text, on_click=None)

按钮控件。参数:text(按钮文字)、on_click(点击事件回调)。返回:ElevatedButton 实例。

Row/Column(controls)

水平或垂直布局。参数:controls(控件列表)。返回:布局对象。

Container(content, padding, bgcolor, expand=False)

容器控件。参数:content(子控件)、padding(内边距)、bgcolor(背景色)、expand(自动扩展)。


补充说明

  1. Flet 底层使用 Flutter 渲染,因此 UI 性能远高于 Tkinter / PySimpleGUI。
  2. Python 层不处理绘图,实际渲染在前端完成,通过 WebSocket 与 Python 交互。
  3. 可以打包为桌面应用(Flet CLI 支持打包)。
  4. 虽支持移动端,但当前在部署和性能上仍在持续改进中。
  5. 适合快速开发与内部工具,但不推荐用于复杂大型前端项目。

小结

Flet 使 Python 开发者能够以极低的学习成本构建现代、跨平台的 GUI 与 Web 应用。凭借 Flutter 的高性能渲染和丰富控件体系,Flet 适合构建内部工具、实时仪表盘、企业管理界面等高交互应用。其简单的事件机制、响应式布局和'纯 Python 无需前端'的开发模式极大降低了应用界面开发难度,是当前 Python 最具潜力的跨平台 UI 框架之一。

目录

  1. Flet 跨平台 Python UI 框架
  2. 安装
  3. 常见应用场景
  4. 核心概念
  5. 1. Flet 应用程序(Page)
  6. 2. 控件(Controls)
  7. 3. 事件回调(Events)
  8. 4. 响应式布局(Responsive Layout)
  9. 5. 热重载(Hot Reload)
  10. 应用举例
  11. 例 1:最简单的窗口
  12. 例 2:按钮点击事件
  13. 例 3:输入框与响应
  14. 例 4:布局示例(Row + Column)
  15. 例 5:运行 Web 模式
  16. 常用函数与类速览
  17. ft.app(target, view=None)
  18. Page
  19. Controls(如 Text、Row、Button)
  20. Text(value)
  21. TextField(label=None)
  22. ElevatedButton(text, on_click=None)
  23. Row/Column(controls)
  24. Container(content, padding, bgcolor, expand=False)
  25. 补充说明
  26. 小结

更多推荐文章

查看全部
  • IQuest-Coder-V1 与 Meta-Llama-Code 开源模型部署对比
  • 基于闲置设备部署 Moltbot 构建私有 AI Agent
  • ComfyUI 是什么?节点式 AI 绘画工作流详解
  • 项目经理指南:嵌入、Copilot 与 AI Agent 模式场景解析及 LLM 策略选择
  • 具身智能深度解析:深度视觉如何赋予足式机器人跑酷能力
  • FPGA 基础面试题详解:架构、时序与跨时钟域
  • 从零开始搭建 Trae 的 Java 开发环境
  • 2026 前端跨端框架选型指南
  • 基于 YOLOv26 的无人机遥感环境监测系统
  • 前端权限管理实战:如何优雅地控制用户视图
  • Coze 平台 AI 智能体零基础使用教程
  • OpenAkita:自我进化的开源 AI 助手框架
  • 使用 TRAE CN 与 MasterGo MCP 将设计稿转化为前端代码
  • Flutter 集成 BIP340 实现鸿蒙 Schnorr 签名实战
  • 物理信息神经网络(PINN):AI 与物理定律的融合新范式
  • 动态规划:最长公共子序列(LeetCode-1143)
  • LLM 训练怎么走:预训练、微调和 RLHF
  • Python 真随机数生成与安全实践指南
  • FPGA 时序逻辑实战:计数器、跨时钟域与状态机解析
  • 微信小程序 wx:if 指令使用与性能分析

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online