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

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 框架之一。

图片

“点赞有美意,赞赏是鼓励”

Read more

【从0开始学习Java | 第23篇】动态代理

【从0开始学习Java | 第23篇】动态代理

文章目录 * Java动态代理概述 * 一、动态代理的核心概念 * 形象解释 * 二、两种主流动态代理实现 * 1. JDK动态代理(基于接口) * 原理 * 示例代码 * 优缺点 * 2. CGLIB动态代理(基于子类) * 原理 * 示例代码(需引入CGLIB依赖) * 优缺点 * 三、JDK与CGLIB动态代理对比 * 四、实际应用场景 * 五、总结 Java动态代理概述 在Java开发中,代理模式设计模式之一,而动态代理作为代理模式的进阶形式,在框架开发(如Spring AOP)、日志记录、权限控制等场景中发挥着关键作用。本文将从核心概念出发,拆解两种主流动态代理的实现逻辑,并分析其适用场景。 一、动态代理的核心概念 动态代理指在程序运行时,通过反射机制动态生成代理类,而非在编译期预先定义。其核心价值在于:无需为每个目标类手动编写代理类,即可统一为多个目标类添加横切逻辑(如日志、事务、异常处理),降低代码耦合度。

By Ne0inhk

Java智能客服系统实战:基于Spring Boot与NLP的高效实现方案

最近在做一个智能客服系统的项目,之前也调研过不少方案,发现传统的客服系统确实有不少痛点。今天就来分享一下我们团队基于 Spring Boot 和 NLP 技术,从零搭建一套高效智能客服系统的实战经验,希望能给有类似需求的同学一些参考。 1. 为什么需要智能客服?传统方案的痛点 在项目初期,我们维护的是一个基于规则引擎的客服系统。它的工作原理很简单:预先设定好一堆“关键词-回复”的匹配规则。用户提问时,系统就去遍历这些规则,找到匹配度最高的那条,然后给出预设的回复。 这套系统初期跑起来还行,但随着业务发展,问题越来越明显: 1. 规则爆炸,维护噩梦:每增加一个业务场景,就要手动添加一堆规则。比如“怎么退货”、“我要退款”、“退货流程是什么”,本质上是一个意图,却需要写三条甚至更多规则。规则库越来越臃肿,维护成本指数级上升。 2. 缺乏语义理解,死板僵硬:规则引擎只能做字面匹配。用户说“这个玩意我不想要了,能退吗?”,如果规则里只写了“退货”,很可能就匹配不上,

By Ne0inhk

Java 算法实践(七):动态规划

这回溯算法本质上是一种暴力的穷举搜索,它遍历了问题的所有可能性(状态空间树)。然而,在许多问题中,回溯搜索会产生大量的重叠子问题,导致计算资源的极度浪费。 动态规划(Dynamic Programming, DP) 动态规划并非一种具体的算法,而是一种数学优化的思维方式。是一种通过将复杂问题分解为子问题,并存储子问题的解以避免重复计算的算法技术。它与分治法(Divide and Conquer)的区别在于:分治法的子问题通常是独立的(如归并排序),而动态规划的子问题是重叠的。 DP 的核心思想是空间换时间。通过维护一个表格(Table,通常是数组)来记录已经计算过的状态,将指数级的时间复杂度优化为多项式级(通常是线性或平方级)。 一、 从递归到动态规划:思维演进 理解 DP 的最佳路径是从斐波那契数列(Fibonacci)开始。虽然这是一个简单的数学问题,但它完美展示了算法复杂度的演变。 1.1 暴力递归 斐波那契数列定义: f ( n ) = f ( n − 1

By Ne0inhk
IDEA安装教程配置java环境(超详细)_idea配置java,零基础入门到精通,收藏这篇就够了

IDEA安装教程配置java环境(超详细)_idea配置java,零基础入门到精通,收藏这篇就够了

引言 IntelliJ IDEA 是一款功能强大的集成开发环境(IDE),广泛用于 Java 开发,但也支持多种编程语言,如 Kotlin、Groovy 和 Scala。本文将为你提供一步一步的指南,帮助你在 Windows 系统上顺利安装 IntelliJ IDEA。 一、安装 JDK 1.1下载JDK 1.访问 JDK 下载页面 打开浏览器,访问Oracle JDK 下载页面. Java Downloads | Oraclehttps://www.oracle.com/java/technologies/downloads/#java22 2.选择版本 选择适合你的 JDK 版本(例如 JDK17或JDK21

By Ne0inhk