Appearance
创建一个新的 Flet 应用
创建一个新目录(如果已经使用项目管理器进行了初始化,则应该已存在包含 pyproject.toml 的目录)并切换到该目录。
要创建一个新的“极简” Flet 应用,请运行以下命令:
bash
uv run flet create .bash
flet create .重要
任何已存在的 README.md 或 pyproject.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 的实际运行效果吧!