跳到主要内容

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

decoration

背景装饰。

值的类型为BoxDecoration

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

media

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

值的类型为PageMediaData

备注

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

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):
progress_bar = ft.ProgressBar(visible=False)
page.overlay.append(progress_bar)

def button_click(e):
progress_bar.visible = True
e.control.disabled = True
page.update()
sleep(3)
progress_bar.visible = False
e.control.disabled = False
page.update()

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


ft.app(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 handle_window_event(e):
if e.data == "close":
page.open(confirm_dialog)

page.window.prevent_close = True
page.window.on_event = handle_window_event

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

def handle_no(e):
page.close(confirm_dialog)

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=handle_yes),
ft.OutlinedButton("No", on_click=handle_no),
],
actions_alignment=ft.MainAxisAlignment.END,
)

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

ft.app(main)

window_to_front()

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

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

事件

on_app_lifecycle_state_change

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

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

事件参数类型值为 AppLifecycleStateChangeEvent.

on_close

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

on_connect

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

on_disconnect

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

on_error

发生未处理异常时触发。

on_keyboard_event

当按下键盘按键时触发。

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

on_login

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

on_logout

调用 page.logout() 后触发。

on_media_change

page.media发生变化时触发。事件处理程序参数的类型为PageMediaData

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

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

在 v0.23.0 中已弃用,并将在 v0.26.0 中删除。请改用Page.on_resized

on_resized

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

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

page.on_resized = page_resized

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

on_route_change

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

事件参数类型为RouteChangeEvent.

on_scroll

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

事件参数类型为 OnScrollEvent

on_view_pop

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

事件参数类型为 ViewPopEvent.

on_window_event

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

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

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

魔术方法

__contains__(control)

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


import flet as ft


def main(page: ft.Page):
hello = ft.Text("Hello, World!")
page.add(hello)
print(hello in page) # True


ft.app(main)