专业的编程技术博客社区

网站首页 > 博客文章 正文

Flet 布局控件:ft.Page(页面),是根容器,是控件的容器View

baijin 2025-01-26 21:02:07 博客文章 32 ℃ 0 评论

ft.Page(页面)是控件的容器View。当新用户会话启动时,会自动创建页面实例和根视图。

每个应用的主函数,必须用到它,它是一切控件的顶级、根、总容器。比如:

import flet as ft
def main(page: ft.Page):
    ....
    
ft.app(target=main)

一、ft.Page 的属性解读

auto_scroll

值为True,表示当子项更新时,滚动条是否应自动将其位置移动到末尾。值为False,方法scroll_to()才能发挥作用。

appbar

AppBar是显示在页面顶部的控件。AppBar这个要单独讲解到。

bgcolor

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

bottom_appbar

BottomAppBar控件显示在页面底部。如果同时提供bottom_appbar和属性,将显示 。navigation_barNavigationBar

browser_context_menu

用于启用或禁用用户右键单击网页时出现的上下文菜单。值的类型为BrowserContextMenu。 仅限网络。

浏览器上下文菜单 Page.browser_context_menu。类具有以下属性:

disabled 上下文菜单是否被禁用。默认为False.

方法 disable():禁用上下文菜单。

enable():启用上下文菜单。

client_ip

连接用户的IP地址。 仅限网络。

client_user_agent

连接用户的浏览器详细信息。 仅限网络。

controls

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

例如,要将新控件添加到页面:

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

要删除页面上最顶部的控件:

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

dark_theme

在深色主题模式下自定义应用程序的主题。值是该类的一个实例-主题Theme()指南中的更多信息。

debug

TrueFlet 应用程序的 Flutter 客户端是否在调试模式下运行。

decoration

背景装饰。值的类型为BoxDecoration。

design

保留以供将来使用。

drawer

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

end_drawer

NavigationDrawer显示为从页面末端边缘滑动的面板的控件。

floating_action_button

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

floating_action_button_location

定义 的位置FloatingActionButton。值是枚举类型FloatingActionButtonLocation。默认为FloatingActionButtonLocation.END_FLOAT.

fonts

定义要在应用程序中使用的自定义字体。

Value 是一个字典,其中的键代表用于引用的字体系列名称,值代表

  • Key:用于参考的字体系列名称。
  • Value:字体源,可以是绝对 URL 或本地资源的相对路径。支持以下字体文件格式.ttc,.ttf以及.otf.

使用示例在这里。

height

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

horizontal_alignment

子控件应如何水平放置。属性值是CrossAxisAlignment枚举。默认为START.

locale_configuration

应用程序的区域设置配置。值的类型为LocaleConfiguration。

media

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

值的类型为PageMediaData。

在大多数情况下,将内容纳入SafeArea控制范围内应该没问题。

name

调用中指定的页面名称ft.app()。当 Flet 应用程序作为 Web 应用程序运行时,设置页面名称。这是主机名之后 URL 的一部分。

navigation_bar

NavigationBar控件显示在页面底部。如果同时提供bottom_appbar和属性,将显示 。navigation_barNavigationBar

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(main)

platform_brightness

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

值是只读的并且类型为Brightness。

pubsub

一个简单的 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是具有两个参数的函数或方法:topic和message,例如:

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

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

query

后的应用程序 URL 的一部分?。该值是QueryString用于获取查询参数的辅助方法的实例。

route

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

rtl

True将文本方向设置为从右到左。

默认为False.

scroll

启用页面垂直滚动以防止其内容溢出。

值的类型为ScrollMode。

session

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

session_id

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

spacing

页面上控件之间的垂直间距。默认值为 10 个虚拟像素。仅当alignment设置为start、end或时才应用间距center。

show_semantics_debugger

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

theme

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

值是该类的一个实例-主题Theme()指南中的更多信息。

theme_mode

页面的主题模式。

值是类型ThemeMode,默认为ThemeMode.SYSTEM.

title

浏览器或本机操作系统窗口的标题

url

完整的 Web 应用程序的 URL。

vertical_alignment

子控件应如何垂直放置。值是类型MainAxisAlignment,默认为MainAxisAlignment.START.

views

View用于构建导航历史记录的控件列表。列表中的最后一个视图是页面上显示的视图。第一个视图是无法弹出的“根”视图。

web

True如果应用程序正在 Web 浏览器中运行。

width

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

window

具有属性/方法/事件的类,用于控制应用程序的本机操作系统窗口。值的类型为Window。

二、ft.Page 事件

on_app_lifecycle_state_change

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

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

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

on_close

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

on_connect

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

on_disconnect

当网络用户从页面会话断开连接时触发,即关闭浏览器选项卡/窗口。

on_error

当发生未处理的异常时触发。

on_keyboard_event

当按下键盘按键时触发。事件处理程序参数的类型为KeyboardEvent。

on_login

在 OAuth 授权流程成功或失败时触发。有关更多信息和示例,请参阅身份验证指南。

on_logout

调用后触发page.logout()。

on_media_change

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

on_platform_brigthness_change

当应用程序主机平台的亮度发生变化时触发。

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。

魔术方法: __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)

(汇报完毕,感谢收看!)

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表