Python+Flet:三行代码搞定漂亮界面,新手也能轻松开发APP

一、Flet是啥?有啥特点?

简单来说,Flet是一个让Python小白也能快速开发精美界面应用的库。不管是桌面应用、网页应用,还是手机应用,通通一套代码搞定!

它的主要特点:

  • 超低门槛:不需要学HTML、CSS、JavaScript

  • 现代UI:默认Material Design,颜值在线

  • 全平台:一套代码,Windows、Mac、Linux、Web全覆盖

  • 实时热更新:代码改动实时可见,开发超爽

  • 丰富组件:按钮、输入框、图表、列表…应有尽有

在几分钟内从想法到应用程序

为您的团队,周末项目,数据输入表单,kiosk应用程序或高保真原型提供的内部工具或仪表板 - Flet是一个理想的框架,可以快速破解一个美观的交互式应用程序,为一组用户提供服务。

简单的架构

没有更复杂的架构与JavaScript前端,REST API后端,数据库,缓存等。使用Flet,您只需在Python中编写一个整体式有状态应用程序,即可获得多用户实时单页应用程序(SPA)。

包括电池

要开始使用 Flet 进行开发,您只需要自己喜欢的 IDE 或文本编辑器。没有 SDK,没有成千上万的依赖项,没有复杂的工具 - Flet 具有内置的 Web 服务器,其中包含托管资产和桌面客户端。

由Flutter提供动力

Flet UI是用Flutter构建的,所以你的应用程序看起来很专业,可以交付到任何平台。Flet通过将较小的“小部件”组合成具有命令式编程模型的即用型“控件”来简化Flutter模型。

语言无关

Flet 与语言无关,因此团队中的任何人都可以用自己喜欢的语言开发 Flet 应用程序。Python已经得到支持,Go,C#和其他产品紧随其后。

交付到任何设备

将 Flet 应用部署为 Web 应用,并在浏览器中查看它。将其打包为适用于Windows,macOS和Linux的独立桌面应用程序。将其作为PWA安装在移动设备上,或通过适用于iOS和Android的Flet应用程序查看。

安装使用

pip install flet

一个简单的计数示例

import flet
from flet import IconButton, Page, Row, TextField, icons

def main(page: Page):
    page.title = "Flet counter example"
    page.vertical_alignment = "center"

    txt_number = TextField(value="0", text_align="right", width=100)

    def minus_click(e):
        txt_number.value = int(txt_number.value) - 1
        page.update()

    def plus_click(e):
        txt_number.value = int(txt_number.value) + 1
        page.update()

    page.add(
        Row(
            [
                IconButton(icons.REMOVE, on_click=minus_click),
                txt_number,
                IconButton(icons.ADD, on_click=plus_click),
            ],
            alignment="center",
        )
    )

flet.app(target=main)

运行程序:

python counter.py

如何我们希望它只运行在浏览器端,可以如下配置:

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

默认是运行桌面端的,但是在我们启动的时候,会在随机端口启动一个web服务器,也可以在web端进行访问

来个"Hello World"感受一下Flet有多简单:

import flet as ft

def main(page: ft.Page):
    page.title = "我的第一个Flet应用"
    page.add(ft.Text("Hello, 这是用Flet做的界面!"))

ft.app(target=main)

在这里插入图片描述

二、Flet基础概念

在深入学习前,先了解几个关键概念:

  1. Page(页面):应用的主窗口,所有内容都放在这里
  2. Controls(控件):界面元素,如按钮、文本框等
  3. 布局控件:如Row(行)、Column(列)、Container(容器),用来组织其他控件
  4. 更新机制:调用page.update()让修改生效

最基本的Flet程序结构:

import flet as ft

def main(page: ft.Page):
    # 1. 配置页面属性
    page.title = "应用标题"
    
    # 2. 定义控件
    my_text = ft.Text("这是一段文本")
    
    # 3. 添加控件到页面
    page.add(my_text)
    
    # 4. 修改控件(如需要)
    my_text.value = "文本已修改"
    page.update()  # 更新UI显示

# 启动应用
ft.app(target=main)

在这里插入图片描述

三、简单控件

1. 文本控件

import flet as ft

def main(page: ft.Page):
    page.title = "文本控件演示"
    
    # 基本文本
    page.add(ft.Text("普通文本"))
    
    # 自定义样式文本
    page.add(
        ft.Text(
            "大号红色粗体文本", 
            size=30,  # 文字大小
            color="red",  # 文字颜色
            weight=ft.FontWeight.BOLD,  # 粗体
            italic=True,  # 斜体
        )
    )
    
    # 带阴影效果
    page.add(
        ft.Text(
            "带阴影的文本",
            size=20,
            shadow=ft.BoxShadow(
                spread_radius=1,
                blur_radius=10,
                color=ft.colors.BLUE_GREY_300,
                offset=ft.Offset(2, 2),
            )
        )
    )

ft.app(target=main)

在这里插入图片描述
2. 按钮控件

import flet as ft

def main(page: ft.Page):
    page.title = "按钮控件演示"
    
    # 计数器变量
    counter = 0
    
    # 显示计数的文本
    text_counter = ft.Text(f"计数: {counter}")
    
    # 按钮点击事件处理
    def button_clicked(e):
        nonlocal counter
        counter += 1
        text_counter.value = f"计数: {counter}"
        page.update()
    
    # 普通按钮
    btn1 = ft.ElevatedButton("点我计数", on_click=button_clicked)
    
    # 带图标的按钮
    btn2 = ft.ElevatedButton(
        "带图标的按钮",
        icon=ft.icons.ADD_CIRCLE,
        on_click=button_clicked
    )
    
    # 图标按钮
    btn3 = ft.IconButton(
        icon=ft.icons.REMOVE_CIRCLE,
        icon_color="red",
        tooltip="图标按钮",
        on_click=button_clicked
    )
    
    # 将所有控件添加到页面
    page.add(
        text_counter,
        ft.Row([btn1, btn2, btn3])  # 使用Row排成一行
    )

ft.app(target=main)

在这里插入图片描述
3.输入控件

import flet as ft

def main(page: ft.Page):
    page.title = "输入控件演示"
    
    # 显示输入内容的文本
    result_text = ft.Text("在下方输入内容后,点击按钮查看效果")
    
    # 文本输入框
    text_input = ft.TextField(
        label="请输入文字",
        hint_text="这里是提示文字",
        prefix_icon=ft.icons.FORMAT_SIZE,
        suffix_text="文本",
    )
    
    # 密码输入框
    password_input = ft.TextField(
        label="请输入密码",
        password=True,  # 显示为密码形式
        can_reveal_password=True,  # 允许显示密码
    )
    
    # 多行文本框
    multiline_input = ft.TextField(
        label="多行文本",
        multiline=True,
        min_lines=2,
        max_lines=5,
    )
    
    # 按钮点击事件处理
    def submit_clicked(e):
        result_text.value = f"""
        文本框内容: {text_input.value}
        密码框内容: {password_input.value}
        多行文本框内容: {multiline_input.value}
        """
        page.update()
    
    # 提交按钮
    submit_button = ft.ElevatedButton("提交", on_click=submit_clicked)
    
    # 将所有控件添加到页面
    page.add(
        result_text,
        text_input,
        password_input,
        multiline_input,
        submit_button,
    )

ft.app(target=main)

在这里插入图片描述

Flet的优缺点分析

优点:

  • 上手简单:纯Python代码,不需要学HTML/CSS/JS
  • 界面美观:Material Design风格,默认就很好看
  • 跨平台:一套代码支持桌面、Web、移动
  • 实时热更新:代码修改后立即可见
  • 丰富组件:提供了大量现成的UI组件
  • 活跃社区:版本更新快,文档丰富

缺点:

  • 性能:复杂应用可能比原生应用慢一些
  • 自定义限制:高度自定义UI时不如原生灵活
  • 库尚年轻:相比Qt、Tkinter等成熟框架,生态仍在发展中

Flet是一个为Python开发者提供的强大UI工具库,它让我们能用纯Python创建精美的跨平台应用,无需学习前端知识。对于Python爱好者和初学者来说,Flet绝对是一个友好且实用的选择。

👉CSDN大礼包:《Python入门资料&实战源码&安装工具】免费领取(安全链接,放心点击)
Python中,通常我们不会直接使用名为"Flet"的库来设计登录界面,因为"Flet"这个库似乎并不存在于主流的Python框架或库集中。然而,如果你是指Flask这个流行的Web开发框架,我们可以利用它配合HTML模板来创建登录页面。 首先,你需要安装Flask,可以使用pip命令: ```bash pip install flask ``` 然后,你可以创建一个简单的登录视图(views.py)文件,示例如下: ```python from flask import Flask, render_template, request app = Flask(__name__) @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': username = request.form.get('username') password = request.form.get('password') # 这里只是一个示例,实际应用需要验证用户名密码 # 如果验证通过,跳转到其他页面,如: return redirect('/') else: return render_template('login.html') if __name__ == '__main__': app.run(debug=True) ``` 接下来,你需要在templates目录下创建一个`login.html`文件,这是你的登录界面模板,可以用Bootstrap或者其他前端库来美化,基本结构如下: ```html <!DOCTYPE html> <html lang="zh"> <head> <title>Login Page</title> </head> <body> <form method="post"> <label for="username">Username:</label> <input type="text" id="username" name="username" required><br> <label for="password">Password:</label> <input type="password" id="password" name="password" required><br> <input type="submit" value="Login"> </form> </body> </html> ``` 在这个例子中,用户输入用户名和密码后,提交表单将发送到'/login'路由,Flask会处理请求并渲染`login.html`。如果需要更复杂的交互或验证逻辑,可以在Flask视图函数中添加更多的代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值