跳到主要内容

Page

Page 是 View 控件的容器。

当新的用户会话开始时,会自动创建一个页面实例和根视图。

属性

auto_scroll

如果应自动将滚动条位置移动到末端时为 True。必须为 False 以使 scroll_to() 方法起作用。

appbar

在页面顶部显示的 AppBar 控件。

在页面顶部显示的 Banner 控件。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 page.overlay.append(banner) 替代。

bgcolor

页面的背景颜色。

颜色值可以是 #ARGB 格式(例如 #FFCC0000)、#RGB 格式(例如 #CC0000)的十六进制值,或者是 flet.colors 模块中的命名颜色。

bottom_appbar

在页面底部显示的 BottomAppBar 控件。如果同时提供了 bottom_appbarnavigation_bar 属性,则会显示 NavigationBar

bottom_sheet

显示的 BottomSheet 控件。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 page.overlay.append(bottom_sheet) 替代。

浏览器上下文菜单

用于启用或禁用用户在网页上右键单击时出现的上下文菜单。

值的类型为 BrowserContextMenu

🌎 仅网页。

client_ip

🌎 仅限 Web。连接用户的 IP 地址。

client_user_agent

🌎 仅限 Web。连接用户的浏览器详情。

controls

要在页面上显示的控件列表。

例如,添加一个新控件到页面:

page.controls.append(ft.Text("Hello!"))
page.update()

或使用 page.add()方法。

实现移除页面顶部的控件:

page.controls.pop()
page.update()

dark_theme

在深色主题模式下自定义应用程序的主题。

值是 Theme() 类的一个实例 - 更多信息请参见 theming 指南。

debug

如果 Flet 应用的 Flutter 客户端在调试模式下运行,则为 True

design

保留供将来使用。

dialog

显示的 AlertDialog 控件。 在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用page.overlay.append(dialog)替代。

drawer

作为从页面起始边缘滑出的面板显示的 NavigationDrawer 控件。

end_drawer

作为从页面结束边缘滑出的面板显示的 NavigationDrawer 控件。

floating_action_button

显示在页面内容顶部的 FloatingActionButton 控件。

floating_action_button_location

定义 FloatingActionButton 的位置。

属性值是 FloatingActionButtonLocation 。默认值为 END_FLOAT

fonts

允许导入自定义字体,并在 Text.font_family 中使用,或通过 theme.font_family 应用于整个应用程序。

Flet 支持以下字体格式:

  • .ttc
  • .ttf
  • .otf

fonts 属性的值是一个字典,其中键是引用该字体的字体系列名称,值是要导入的字体文件的 URL。

字体可以通过提供绝对 URL 从外部资源导入,或通过提供相对 URL 和 assets_dir 从应用程序资源导入。

flet.app() 调用中指定 assets_dir 以设置应用程序可用的资源位置。assets_dir 可以是相对于 main.py 目录的相对路径或绝对路径。例如,考虑以下程序结构:

/assets
/fonts
/OpenSans-Regular.ttf
main.py

现在,以下程序从 GitHub 加载 "Kanit" 字体,从资源中加载 "Open Sans"。将 "Kanit" 设置为默认应用程序字体,并为特定的 Text 控件使用 "Open Sans":

import flet as ft

def main(page: ft.Page):
page.fonts = {
"Kanit": "https://raw.githubusercontent.com/google/fonts/master/ofl/kanit/Kanit-Bold.ttf",
"Open Sans": "/fonts/OpenSans-Regular.ttf"
}

page.theme = Theme(font_family="Kanit")

page.add(
ft.Text("This is rendered with Kanit font"),
ft.Text("This is Open Sans font example", font_family="Open Sans")
)

ft.app(target=main, assets_dir="assets")
备注

目前仅支持静态字体,即仅包含一种特定宽度/重量/样式组合的字体,例如 "Open Sans Regular" 或 "Roboto Bold Italic"。

可变字体支持仍在进行中

但是,如果您需要在应用中使用可变字体,可以使用 fonttools 创建特定权重的静态“实例化”字体,然后使用这些字体:

fonttools varLib.mutator ./YourVariableFont-VF.ttf wght=140 wdth=85

使用 Wakamai Fondue 在线工具探索可用的字体特性(例如 wght 的可能选项)。

height

包含 Flet 应用的网页或本机操作系统窗口的高度。此属性是只读的。通常在 page.on_resize 处理程序中使用。

horizontal_alignment

子控件应如何水平放置。

属性值是 CrossAxisAlignment 。默认值为 START

locale_configuration

应用程序的区域设置配置。值是 LocaleConfiguration 类的一个实例,该类具有以下属性:

  • supported_locales - 应用计划支持的 Locale 列表。如果提供的值为 None 或列表为空,则此属性内部默认值为 [Locale("en", "US")](美国英语区域设置)。
  • current_locale - 应用的当前 Locale。如果提供的区域设置不在 supported_locales 中,则此属性将设置为 supported_locales[0](列表中的第一个项目)。

Locale 类具有以下属性:

  • language_code - 区域设置的语言代码。
  • country_code - 区域设置的国家代码。
  • script_code - 区域设置的脚本代码。

media

提供关于应用媒体(屏幕、窗口)的详细信息。有关更多信息,请参阅 Flutter 文档中的 MediaQueryData

此属性的值是 PageMediaData 类的一个实例,具有以下字段:

  • padding(类型为 Padding) - 显示器部分被系统 UI 部分遮挡的区域,通常是硬件显示器“缺口”或系统状态栏。
  • view_padding(类型为 Padding) - 显示器部分被系统 UI 部分遮挡的区域,通常是硬件显示器“缺口”或系统状态栏。
  • view_insets(类型为 Padding) - 显示器被系统 UI 完全遮挡的部分,通常是设备的键盘。
备注

在大多数情况下,您应该将内容包装在 SafeArea 控件中。

🎬 观看此视频 解释 paddingview_paddingview_insets

name

ft.app() 调用中指定的页面名称。运行为 web 应用时设置页面名称。这是主机名后的 URL 部分。

在页面底部显示的 NavigationBar 控件。如果同时提供了 bottom_appbarnavigation_bar 属性,则会显示 NavigationBar

on_scroll_interval

on_scroll 事件的节流时间(毫秒)。默认值为 10

overlay

显示在主要页面内容顶部的 Control列表。

padding

页面内容与其边缘之间的空间。默认值是每侧 10 像素。设置为零填充:

page.padding = 0
page.update()

填充是 Padding 类的一个实例。

platform

应用程序运行的操作系统。

属性值是 PagePlatform

此属性可用于创建自适应 UI,根据操作系统使用不同的控件:

def main(page: ft.Page):
if page.platform == ft.PagePlatform.MACOS:
page.add(ft.CupertinoDialogAction("Cupertino Button"))
else:
page.add(ft.TextButton("Material Button"))

您还可以出于测试目的设置此属性:

import flet as ft


def main(page):
def set_android(e):
page.platform = ft.PagePlatform.ANDROID
page.update()
print("New platform:", page.platform)

def set_ios(e):
page.platform = "ios"
page.update()
print("New platform:", page.platform)

page.add(
ft.Switch(label="Switch A", adaptive=True),
ft.ElevatedButton("Set Android", on_click=set_android),
ft.ElevatedButton("Set iOS", on_click=set_ios),
)

print("Default platform:", page.platform)


ft.app(target=main)

platform_brightness

主机平台当前的亮度模式。

值为只读,类型为Brightness

pubsub

用于在应用程序会话之间传递消息的简单发布/订阅实现。

subscribe(handler)

订阅当前应用会话的广播(无主题)消息。handler 是一个具有单个 message 参数的函数或方法,例如:

def main(page: ft.Page):

def on_broadcast_message(message):
print(message)

page.pubsub.subscribe(on_broadcast_message)

subscribe_topic(topic, handler)

订阅当前应用会话的特定主题。handler 是一个具有两个参数的函数或方法:topicmessage,例如:

def main(page: ft.Page):

def on_message(topic, message):
print(topic, message)

page.pubsub.subscribe_topic("general", on_message)

send_all(message)

向所有订阅者广播消息。message 可以是任何内容:简单的文字或类实例,例如:

@dataclass
class Message:
user: str
text: str

def main(page: ft.Page):

def on_broadcast_message(message):
page.add(ft.Text(f"{message.user}: {message.text}"))

page.pubsub.subscribe(on_broadcast_message)

def on_send_click(e):
page.pubsub.send_all(Message("John", "Hello, all!"))

page.add(ft.ElevatedButton(text="Send message", on_click=on_send_click))

send_all_on_topic(topic, message)

向特定主题的所有订阅者发送消息。

send_others(message)

向所有订阅者(除发送者外)广播消息。

send_others_on_topic(topic, message)

向特定主题的所有订阅者(除发送者外)发送消息。

unsubscribe()

取消当前应用会话的广播消息订阅,例如:

@dataclass
class Message:
user: str
text: str

def main(page: ft.Page):

def on_leave_click(e):
page.pubsub.unsubscribe()

page.add(ft.ElevatedButton(text="Leave chat", on_click=on_leave_click))

unsubscribe_topic(topic)

取消当前应用会话的特定主题订阅。

unsubscribe_all()

取消当前应用会话的广播消息和所有主题的订阅,例如:

def main(page: ft.Page):
def client_exited(e):
page.pubsub.unsubscribe_all()

page.on_close = client_exited

pwa

如果应用程序作为渐进式 Web 应用(PWA)运行,则为 True。只读。

query

应用 URL 中 ? 之后的部分。值是 QueryString 的一个实例,带有用于获取查询参数的辅助方法。

route

获取或设置页面的导航路由。有关更多信息和示例,请参见导航和路由部分。

rtl

True 设置文本方向为从右到左。默认值为 False

scroll

使页面能够垂直滚动以防止其内容溢出。

值的类型为 ScrollMode

session

用于会话数据的简单 KV 存储。

session_id

用户会话的唯一 ID。此属性是只读的。

snack_bar

一个用于显示的SnackBar控件。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用page.overlay.append(snack_bar)替代。

spacing

页面上控件之间的垂直间距。默认值为 10 虚拟像素。仅当 alignment 设置为 startendcenter 时应用间距。

splash

显示在页面内容顶部的 ControlProgressBarProgressRing 可用作指示某些耗时操作的指示器,例如:

from time import sleep
import flet as ft

def main(page: ft.Page):
def button_click(e):
page.splash = ft.ProgressBar()
btn.disabled = True
page.update()
sleep(3)
page.splash = None
btn.disabled = False
page.update()

btn = ft.ElevatedButton("Do some lengthy task!", on_click=button_click)
page.add(btn)

ft.app(target=main)

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用page.overlay.append(splash)替代。

show_semantics_debugger

True 打开显示框架报告的可访问性信息的覆盖层。

theme

在浅色主题模式下自定义应用程序的主题。目前,主题只能从“种子”颜色自动生成。例如,从绿色生成浅色主题。

值是 Theme() 类的一个实例 - 更多信息请参见 theming 指南。

theme_mode

页面主题。

值是 ThemeMode 。默认值为 SYSTEM

title

浏览器或本机操作系统窗口的标题,例如:

page.title = "My awesome app"
page.update()

url

Web 应用的完整 URL。

vertical_alignment

子控件应如何垂直放置。

属性值是 MainAxisAlignment

例如,MainAxisAlignment.START(默认值)将子控件放置在页面顶部。

views

用于构建导航历史记录的 View 控件列表。

列表中的最后一个视图是页面上显示的视图。

第一个视图是“根”视图,无法弹出。

web

如果应用程序在 Web 浏览器中运行,则为 True

width

包含 Flet 应用的网页或本机操作系统窗口的宽度。此属性是只读的。通常在 page.on_resize 处理程序中使用。

window

一个具有属性/方法/事件以控制应用程序的原生操作系统窗口的类。

值的类型为 Window

window_always_on_top

🖥️ 仅限桌面。设置窗口是否应始终显示在其他窗口之上。默认值为 False在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用Page.window.always_on_top替代。

window_bgcolor

🖥️ 仅桌面端。设置应用程序窗口的背景颜色。

page.bgcolor 一起使用以使窗口透明:

import flet as ft

def main(page: ft.Page):
page.window.bgcolor = ft.colors.TRANSPARENT
page.bgcolor = ft.colors.TRANSPARENT
page.window.title_bar_hidden = True
page.window.frameless = True
page.window.left = 400
page.window.top = 200
page.add(ft.ElevatedButton("我是一个浮动按钮!"))

ft.app(target=main)

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.bgcolor 替代。

window_focused

🖥️ 仅桌面端。设置为 True 以聚焦包含 Flet 应用的原生操作系统窗口。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.focused 替代。

window_frameless

🖥️ 仅桌面端。设置为 True 以使应用程序窗口无边框。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.frameless 替代。

window_full_screen

🖥️ 仅桌面端。设置为 True 以将应用程序的原生操作系统窗口切换到全屏模式。

默认值为 False

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.full_screen 替代。

window_height

🖥️ 仅桌面端。获取或设置包含 Flet 应用的原生操作系统窗口的高度。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.height 替代。

window_left

🖥️ 仅桌面端。获取或设置原生操作系统窗口的水平位置 - 距屏幕左边缘的虚拟像素距离。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.left 替代。

window_maximizable

🖥️ 仅桌面端。设置为 False 以隐藏/禁用原生操作系统窗口的“最大化”按钮。

默认值为 True

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.maximizable 替代。

window_maximized

🖥️ 仅桌面端。如果包含 Flet 应用的原生操作系统窗口已最大化,则为 True ;否则为 False 。将此属性设置为 True 以通过编程方式最大化窗口,将其设置为 False 以取消最大化。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.maximized 替代。

window_max_height

🖥️ 仅桌面端。获取或设置包含 Flet 应用的原生操作系统窗口的最大高度。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.max_height 替代。

window_max_width

🖥️ 仅桌面端。获取或设置包含 Flet 应用的原生操作系统窗口的最大宽度。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.max_width 替代。

window_minimizable

🖥️ 仅桌面端。设置为 False 以隐藏/禁用原生操作系统窗口的“最小化”按钮。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.minimizable 替代。

默认值为 True

window_minimized

🖥️ 仅桌面端。如果包含 Flet 应用的原生操作系统窗口已最小化,则为 True ;否则为 False 。将此属性设置为 True 以通过编程方式最小化窗口,将其设置为 False 以恢复。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.minimized 替代。

window_min_height

🖥️ 仅桌面端。获取或设置包含 Flet 应用的原生操作系统窗口的最小高度。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.min_height 替代。

window_min_width

🖥️ 仅桌面端。获取或设置包含 Flet 应用的原生操作系统窗口的最小宽度。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.min_width 替代。

window_movable

🖥️ 仅桌面端。仅 macOS 。设置为 False 以防止用户更改包含 Flet 应用的原生操作系统窗口的位置。

默认值为 True

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.movable 替代。

window_opacity

🖥️ 仅桌面端。设置原生操作系统窗口的不透明度。值必须在 0.0 (完全透明)和 1.0 (完全不透明)之间。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.opacity 替代。

window_resizable

🖥️ 仅桌面端。设置为 False 以防止用户调整包含 Flet 应用的原生操作系统窗口的大小。

默认值为 True

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.resizable 替代。

window_title_bar_hidden

🖥️ 仅桌面端。设置为 True 以隐藏窗口标题栏。请参阅 WindowDragArea 控件,它允许在隐藏标题栏的情况下移动应用程序窗口。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.title_bar_hidden 替代。

window_title_bar_buttons_hidden

🖥️ 仅桌面端。设置为 True 以在隐藏标题栏时隐藏窗口操作按钮。

仅对 macOS 有效。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.title_bar_buttons_hidden 替代。

window_top

🖥️ 仅桌面端。获取或设置原生操作系统窗口的垂直位置 - 距屏幕顶部边缘的虚拟像素距离。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.top 替代。

window_prevent_close

🖥️ 仅桌面端。设置为 True 以拦截原生关闭信号。可与 page.on_window_event (close) 事件处理程序和 page.window_destroy() 一起使用,以实现应用程序退出确认逻辑 - 请参阅 page.window_destroy() 以获取代码示例。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.prevent_close 替代。

window_progress_bar

🖥️ 仅桌面端。从 0.01.0 的值,用于在任务栏(Windows)或 Dock(macOS)应用程序按钮上显示进度条。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.progress_bar 替代。

window_skip_task_bar

🖥️ 仅桌面端。设置为 True 以从任务栏(Windows)或 Dock(macOS)隐藏应用程序。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.skip_task_bar 替代。

window_visible

🖥️ 仅桌面端。设置为 True 以使应用程序窗口可见。在应用程序以隐藏窗口启动时使用。

以下程序以隐藏窗口启动,并在 3 秒后使其可见:

from time import sleep

import flet as ft

def main(page: ft.Page):
page.add(ft.Text("Hello!"))

sleep(3)
page.window.visible = True
page.update()

ft.app(target=main, view=ft.AppView.FLET_APP_HIDDEN)

请注意 view=ft.AppView.FLET_APP_HIDDEN ,它在启动时隐藏应用程序窗口。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.visible 替代。

window_width

🖥️ 仅桌面端。获取或设置包含 Flet 应用的原生操作系统窗口的宽度。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.width 替代。

方法

add(*controls)

将控件添加到页面

page.add(ft.Text("Hello!"), ft.FilledButton("按钮"))

can_launch_url(url)

检查指定的 URL 是否可以由设备上安装的某些应用处理。

如果可以验证有可用的处理程序,则返回 True 。返回 False 可能表示没有可用的处理程序,或者应用程序没有权限进行检查。例如:

  • 在最近的 Android 和 iOS 版本上,除非应用程序已配置为允许查询系统的启动支持,否则此方法将始终返回 False
  • 在 Web 上,此方法将始终返回 False ,除了少数始终假定受支持的特定方案(例如 http(s) ),因为网页永远不允许查询已安装的应用程序。

close(control)

关闭提供的控件。

它将 control.open=False 并调用 update()

close_banner()

关闭活动的横幅。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 page.close(banner) 替代。

close_bottom_sheet()

关闭活动的底部表单。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 page.close(bottom_sheet) 替代。

close_dialog()

关闭活动的对话框。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 page.close(dialog) 替代。

close_drawer()

关闭活动的抽屉。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 page.close(drawer) 替代。

close_end_drawer()

关闭活动的末端抽屉。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 page.close(end_drawer) 替代。

close_snack_bar()

关闭活动的小吃栏。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 page.close(snack_bar) 替代。

close_in_app_web_view()

📱 仅限移动设备。关闭使用 launch_url() 打开的应用内 web 视图。

error(message)

记录错误消息。

fetch_page_details()

获取页面详细信息。

get_clipboard()

获取客户端上保存到剪贴板的最后一个文本值。

get_control(id)

获取具有指定 ID 的控件。

get_upload_url(file_name, expires)

生成内置上传存储的预签名上传 URL:

  • file_name - 相对于上传存储路径的路径。
  • expires - URL 的有效时间(秒)。

例如:

upload_url = page.get_upload_url("dir/filename.ext", 60)

要启用内置上传存储,请在 flet.app() 调用中提供 upload_dir 参数:

ft.app(target=main, upload_dir="uploads")

go(route)

一个帮助方法,用于更新 page.route,调用 page.on_route_change 事件处理程序以更新视图,并最终调用 page.update()

insert(at, *controls)

page.controls 列表的特定索引处插入控件。

launch_url(url)

在新浏览器窗口中打开 url

可选方法参数:

  • web_window_name - 打开 URL 的窗口标签/名称: UrlTarget.SELF - 同一浏览器标签,UrlTarget.BLANK - 新的浏览器标签(或在移动设备上的外部应用中)或 <your name> - 命名标签。
  • web_popup_window - 设置为 True 以在浏览器弹出窗口中显示 URL。默认值为 False
  • window_width - 可选,弹出窗口宽度。
  • window_height - 可选,弹出窗口高度。

login(provider, fetch_user, fetch_groups, scope, saved_token, on_open_authorization_url, complete_page_html, redirect_to_page, authorization)

启动 OAuth 流程。有关更多信息和示例,请参见 Authentication 指南。

logout()

清除当前身份验证上下文。有关更多信息和示例,请参见 Authentication 指南。

open(control)

打开所提供的控制。

将此控制添加到 page.overlay ,设置 control.open=True ,然后调用 update()

remove(*controls)

page.controls 列表中删除特定控件。

remove_at(index)

page.controls 列表中的特定索引处删除控件。

run_task(handler, *args, **kwargs)

handler 协程作为当前页面关联的事件循环中的新任务运行。

run_thread(handler, *args)

handler 函数作为当前页面关联的执行器中的新线程运行。

scroll_to(offset, delta, key, duration, curve)

将滚动位置移动到绝对 offset、相对 delta 或跳转到指定 key 的控件。

有关方法详情和示例,请参见 Column.scroll_to()

set_clipboard(data)

在客户端(用户的 web 浏览器或桌面)设置剪贴板数据,例如:

page.set_clipboard("This value comes from Flet app")

show_banner(banner: Banner)

在页面顶部显示横幅。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 page.open(banner) 替代。

show_bottom_sheet(bottom_sheet: BottomSheet)

在页面底部显示底部表单。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 page.open(bottom_sheet) 替代。

show_dialog(dialog: AlertDialog)

显示对话框。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 page.open(dialog) 替代。

show_drawer(drawer: NavigationDialog)

显示 drawer

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 page.open(drawer) 替代。

show_end_drawer(drawer: NavigationDialog)

显示 end_drawer

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 page.open(end_drawer) 替代。

show_snack_bar(snack_bar: SnackBar)

在页面底部显示 SnackBar

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 page.open(snack_bar) 替代。

window_center()

🖥️ 仅桌面端。将应用程序的原生操作系统窗口移动到屏幕中心。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.center() 替代。

window_close()

🖥️ 仅桌面端。关闭应用程序窗口。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.close() 替代。

window_destroy()

🖥️ 仅桌面端。强制关闭应用程序的原生操作系统窗口。此方法可与 page.window_prevent_close = True 一起使用来实现应用程序退出确认:

import flet as ft

def main(page: ft.Page):
page.title = "MyApp"

def window_event(e):
if e.data == "close":
page.dialog = confirm_dialog
confirm_dialog.open = True
page.update()

page.window.prevent_close = True
page.on_window_event = window_event

def yes_click(e):
page.window.destroy()

def no_click(e):
confirm_dialog.open = False
page.update()

confirm_dialog = ft.AlertDialog(
modal=True,
title=ft.Text("Please confirm"),
content=ft.Text("Do you really want to exit this app?"),
actions=[
ft.ElevatedButton("Yes", on_click=yes_click),
ft.OutlinedButton("No", on_click=no_click),
],
actions_alignment=ft.MainAxisAlignment.END,
)

page.add(ft.Text('Try exiting this app by clicking window\'s "Close" button!'))

ft.app(target=main)

window_to_front()

🖥️ 仅桌面端。将应用程序窗口置于前台。

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.to_front() 替代。

事件

on_app_lifecycle_state_change

应用生命周期状态更改时触发。

您可以使用此事件来了解应用何时变为活动状态(置于前台),以使用最新信息更新 UI。此事件适用于 iOS、Android、所有桌面平台和 web。

事件详细信息是 ft.AppLifecycleStateChangeEvent 类型的对象。它包含 state 字段,该字段为 AppLifecycleState 枚举类型,可能具有以下值之一:

AppLifecycleState.SHOW

应用程序显示。

在移动平台上,这通常是在应用程序替换前台的另一个应用程序之前。

在桌面平台上,这是在应用程序最小化或以其他方式显示应用程序的至少一个视图之前。

在 web 上,这是在窗口(或标签)显示之前。

AppLifecycleState.RESUME

应用程序获得输入焦点。表示应用程序进入可见、活动和接受用户输入的状态。

AppLifecycleState.HIDE

应用程序隐藏。

在移动平台上,这通常是在应用程序在前台被另一个应用程序替换之前。

在桌面平台上,这是在应用程序通过最小化或以其他方式隐藏所有视图之前。

在 web 上,这是在窗口(或标签)隐藏之前。

AppLifecycleState.INACTIVE

应用程序失去输入焦点。

在移动平台上,这可能发生在电话通话期间或系统对话框可见时。

在桌面平台上,这是当应用程序的所有视图都失去输入焦点,但至少有一个视图仍然可见时。

在 web 上,这是当窗口(或标签)失去输入焦点时。

AppLifecycleState.PAUSE

应用程序暂停。

在移动平台上,这发生在应用程序被另一个应用程序替换之前。

在桌面平台和 web 上,不会调用此函数。

AppLifecycleState.DETACH

应用程序已退出,并从引擎分离了所有主机视图。

此回调仅在 iOS 和 Android 上调用。

AppLifecycleState.RESTART

应用程序在暂停后恢复。

在移动平台上,这发生在此应用程序成为活动应用程序之前。

在桌面平台和 web 上,不会调用此函数。

on_close

在配置的时间(默认 60 分钟)后会话过期时触发。

on_connect

当 web 用户(重新)连接到页面会话时触发。当应用页面首次打开时不会触发,但在刷新页面或在计算机解锁后 Flet web 客户端重新连接时触发。此事件可用于检测 web 用户何时变为“在线”。

on_disconnect

当 web 用户断开页面会话连接时触发,即关闭浏览器标签/窗口。

on_error

发生未处理异常时触发。

on_keyboard_event

按下键盘键时触发。事件对象 eKeyboardEvent 类的实例:

@dataclass
class ft.KeyboardEvent:
key: str
shift: bool
ctrl: bool
alt: bool
meta: bool

查看一个简单的使用示例

on_login

成功或失败的 OAuth 授权流程完成时触发。有关更多信息和示例,请参见 Authentication 指南。

on_logout

调用 page.logout() 后触发。

on_media_change

page.media 发生更改时触发。事件对象是 PageMediaData 类的实例,描述在 page.media 部分 中。

on_platform_brightness_change

应用主机平台的亮度更改时触发。

on_resize

用户调整包含 Flet 应用的浏览器或本机操作系统窗口的大小时触发,例如:

def page_resize(e):
print("New page size:", page.window.width, page.window_height)

page.on_resize = page_resize

on_route_change

页面路由更改时触发,无论是通过编程方式、编辑应用 URL 还是使用浏览器的后退/前进按钮。

事件对象 eRouteChangeEvent 类的实例:

class RouteChangeEvent(ft.ControlEvent):
route: str # a new page route

on_scroll

页面滚动位置被用户更改时触发。

事件处理程序参数是 OnScrollEvent 类的实例。

on_view_pop

用户点击 AppBar 控件中的自动“返回”按钮时触发。

事件对象 eViewPopEvent 类的实例:

class ViewPopEvent(ft.ControlEvent):
view: ft.View

其中 view 是包含 AppBar 的 View 控件的实例。

on_window_event

当应用程序的原生操作系统窗口更改其状态(位置、大小、最大化、最小化等)时触发。

事件处理程序的参数类型为 WindowEvent

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请使用 Page.window.on_event() 替代。

魔术方法

__contains__(control)

检查页面上是否存在某个控件,例如:

page.add(ft.Text('Hi'))
print(ft.Text('Hi') in page) # True