Skip to content

创建一个新的 Flet 应用

创建一个新目录(如果已经使用项目管理器进行了初始化,则应该已存在包含 pyproject.toml 的目录)并切换到该目录。

要创建一个新的“极简” Flet 应用,请运行以下命令:

bash
uv run flet create .
bash
flet create .

重要

任何已存在的 README.mdpyproject.toml(例如由 uv init 创建的文件)都会被 flet create 命令创建的文件所替换。

该命令将创建以下目录结构:

text
my-app/
├── README.md
├── pyproject.toml
├── src/
│   ├── assets/
│   │   └── icon.png
│   └── main.py
└── storage/
    ├── data/
    └── temp/

您可以在这里找到关于 flet create 命令的更多详细信息。


自动更新 (Auto-update)

Flet 会在每个事件处理程序和 main() 函数结束时自动调用 page.update()(或在最近的隔离祖先控件上调用 .update())。这意味着在大多数情况下,您不需要自己调用 .update()

python
import flet as ft

def main(page: ft.Page):
    def button_click(e):
        page.controls.append(ft.Text("Clicked!"))
        # 无需调用 page.update() —— 它会自动发生

    page.controls.append(ft.Button("Click me", on_click=button_click))
    # 这里同样无需调用 page.update()

ft.run(main)

注意

如果您的事件处理程序已经显式调用了 .update()(例如为 Flet 0.x 编写的代码),则会跳过自动更新,以避免多余的重复更新。


禁用自动更新 (Disabling auto-update)

您可以禁用自动更新,以便对何时向客户端发送更新进行更精细的控制。使用 ft.context.disable_auto_update()ft.context.enable_auto_update() 可以切换此行为。

当在处理程序内部调用时,该设置仅适用于当前的事件处理上下文:

python
import flet as ft

def main(page: ft.Page):
    def add_many_items(e):
        ft.context.disable_auto_update()
        for i in range(100):
            page.controls.append(ft.Text(f"Item {i}"))
        page.update()  # 仅对这 100 个项目进行一次更新

    page.controls.append(ft.Button("Add items", on_click=add_many_items))

ft.run(main)

当在事件处理程序外部(例如在模块级别)调用时,它控制整个应用的全局默认设置:

python
import flet as ft

# 全局禁用自动更新
ft.context.disable_auto_update()

def main(page: ft.Page):
    def button_click(e):
        page.controls.append(ft.Text("Clicked!"))
        page.update()  # 由于关闭了自动更新,必须显式调用

    page.controls.append(ft.Button("Click me", on_click=button_click))
    page.update()

ft.run(main)

现在,让我们运行应用程序,看看 Flet 的实际运行效果吧!


关注我,学习大模型、大数据、Python等热门技术。