跳到主要内容

Window

此类旨在用作 Page.window 的属性。

Window 类的所有属性和方法仅在桌面 🖥️ 平台上可用。

Window 类有以下属性:

alignment

定义应用程序窗口的对齐方式。

值类型为 Alignment

always_on_bottom

是否始终将应用程序窗口显示在其他窗口下面。

默认为 False

仅在 Linux 和 Windows 上有效。

always_on_top

是否始终将应用程序窗口显示在其他窗口上面。

默认为 False

badge_label

在应用程序窗口上设置徽章标签。

仅在 macOS 上有效。

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)

focused

设置为 True 以聚焦本机 OS 窗口。

frameless

是否将应用程序窗口设置为无边框。

full_screen

是否切换应用程序的本机 OS 窗口到全屏模式。

默认为 False

height

定义应用程序窗口的高度。

icon

设置应用程序窗口的图标。

仅在 Windows 上有效。

left

定义应用程序窗口的水平位置 - 距离屏幕左边缘的虚拟像素距离。

maximizable

是否隐藏/禁用本机 OS 窗口的“最大化”按钮。

默认为 True

maximized

是否最大化应用程序窗口。设置此属性为 True 以程序化最大化窗口,设置为 False 以取消最大化。

max_height

定义应用程序窗口的最大高度。

max_width

定义应用程序窗口的最大宽度。

minimizable

是否可以通过窗口的“最小化”按钮最小化应用程序窗口。

默认为 True

minimized

是否最小化应用程序窗口。设置此属性为 True 以程序化最小化窗口,设置为 False 以恢复。

min_height

定义应用程序窗口的最小高度。

min_width

定义应用程序窗口的最小宽度。

movable

是否可以移动应用程序窗口。

默认为 True

仅在 macOS 上有效。

opacity

定义本机 OS 窗口的不透明度。

值必须在 0.0 (完全透明) 和 1.0 (完全不透明) 之间。

resizable

是否可以调整应用程序窗口的大小。

默认为 True

shadow

是否在应用程序窗口周围显示阴影。

在 Windows 上,除非窗口是 frameless,否则不起作用。

仅在 macOS 和 Windows 上有效。

title_bar_hidden

是否隐藏应用程序窗口的标题栏。

请参阅 WindowDragArea 控件,该控件允许移动具有隐藏标题栏的应用程序窗口。

title_bar_buttons_hidden

是否隐藏应用程序窗口的标题栏按钮。

仅在 macOS 上有效。

top

定义本机 OS 窗口的垂直位置 - 距离屏幕顶部边缘的虚拟像素距离。

prevent_close

设置为 True 以拦截本机关闭信号。可以与 page.window.on_event() 事件处理程序和 page.window.destroy() 一起使用,以实现应用程序退出确认逻辑 - 请参阅 page.window.destroy() 的示例代码。

progress_bar

在任务栏 (Windows) 或 Dock (macOS) 应用程序按钮上显示进度条的值,从 0.0 到 `1.0

alignment

定义应用程序窗口的对齐方式。

值类型为 Alignment

always_on_bottom

是否始终将应用程序窗口显示在其他窗口下面。

默认为 False

仅在 Linux 和 Windows 上有效。

always_on_top

是否始终将应用程序窗口显示在其他窗口上面。

默认为 False

badge_label

在应用程序窗口上设置徽章标签。

仅在 macOS 上有效。

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)

focused

设置为 True 以聚焦本机 OS 窗口。

frameless

是否将应用程序窗口设置为无边框。

full_screen

是否切换应用程序的本机 OS 窗口到全屏模式。

默认为 False

height

定义应用程序窗口的高度。

icon

设置应用程序窗口的图标。

仅在 Windows 上有效。

left

定义应用程序窗口的水平位置 - 距离屏幕左边缘的虚拟像素距离。

maximizable

是否隐藏/禁用本机 OS 窗口的“最大化”按钮。

默认为 True

maximized

是否最大化应用程序窗口。设置此属性为 True 以程序化最大化窗口,设置为 False 以取消最大化。

max_height

定义应用程序窗口的最大高度。

max_width

定义应用程序窗口的最大宽度。

minimizable

是否可以通过窗口的“最小化”按钮最小化应用程序窗口。

默认为 True

minimized

是否最小化应用程序窗口。设置此属性为 True 以程序化最小化窗口,设置为 False 以恢复。

min_height

定义应用程序窗口的最小高度。

min_width

定义应用程序窗口的最小宽度。

movable

是否可以移动应用程序窗口。

默认为 True

仅在 macOS 上有效。

opacity

定义本机 OS 窗口的不透明度。

值必须在 0.0 (完全透明) 和 1.0 (完全不透明) 之间。

resizable

是否可以调整应用程序窗口的大小。

默认为 True

shadow

是否在应用程序窗口周围显示阴影。

在 Windows 上,除非窗口是 frameless,否则不起作用。

仅在 macOS 和 Windows 上有效。

title_bar_hidden

是否隐藏应用程序窗口的标题栏。

请参阅 WindowDragArea 控件,该控件允许移动具有隐藏标题栏的应用程序窗口。

title_bar_buttons_hidden

是否隐藏应用程序窗口的标题栏按钮。

仅在 macOS 上有效。

top

定义本机 OS 窗口的垂直位置 - 距离屏幕顶部边缘的虚拟像素距离。

prevent_close

设置为 True 以拦截本机关闭信号。可以与 page.window.on_event() 事件处理程序和 page.window.destroy() 一起使用,以实现应用程序退出确认逻辑 - 请参阅 page.window.destroy() 的示例代码。

progress_bar

在任务栏 (Windows) 或 Dock (macOS) 应用程序按钮上显示进度条的值,从 0.01.0

仅在 Windows 和 macOS 上有效。

skip_task_bar

设置为 True 以隐藏应用程序从任务栏 (Windows) 或 Dock (macOS)。

visible

是否使应用程序窗口可见。用于应用程序以隐藏窗口启动时。

以下程序以隐藏窗口启动,并在 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(main, view=ft.AppView.FLET_APP_HIDDEN)

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

width

定义应用程序窗口的宽度。

方法

center()

将应用程序窗口移动到屏幕中心。

close()

关闭应用程序窗口。

destroy()

强制关闭应用程序窗口。

此方法可与 page.window.prevent_close = True 一起使用,以实现应用程序退出确认:

import flet as ft

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

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

page.window.prevent_close = True
page.window.on_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(main)

to_front()

将应用程序窗口置于前台(位于其他窗口之上)。

事件

on_event

当应用程序窗口更改其状态(位置、大小、最大化、最小化等)时触发。

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

on_resized

当应用程序窗口调整大小时触发。

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