Skip to main content

Window

This class is meant to be used as a property of Page.window.

All properties and methods of the Window class are available only on Desktop 🖥️ platforms.

Window class has the following properties:

alignment

Defines the alignment of the app window.

Value is of type Alignment.

always_on_bottom

Whether the app window should always be displayed below other windows.

Defaults to False.

Has effect on Linux and Windows only.

always_on_top

Whether the app window should always be displayed on top of other windows.

Defaults to False.

badge_label

Sets a badge label on the app window.

Has effect on macOS only.

bgcolor

Sets background color of an application window.

Use together with page.bgcolor to make a window transparent:

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("I'm a floating button!"))

ft.app(main)

focused

Set to True to focus a native OS window.

frameless

Whether the app window should be frameless.

full_screen

Whether to switch app's native OS window to a fullscreen mode.

Defaults to False.

height

Defines the height of the app window.

icon

Sets the icon of the app window.

Has effect on Windows only.

left

Defines the horizontal position of the app window - a distance in virtual pixels from the left edge of the screen.

maximizable

Whether to hide/disable native OS window's "Maximize" button.

Defaults to True.

maximized

Whether the app window containing is maximized. Set this property to True to programmatically maximize the window and set it to False to unmaximize it.

max_height

Defines the maximum height of the app window.

max_width

Defines the maximum width of the app window.

minimizable

Whether the app window can be minimized through the window's "Minimize" button.

Defaults to True.

minimized

Whether the app window is minimized. Set this property to True to programmatically minimize the window and set it to False to restore it.

min_height

Defines the minimum height of the app window.

min_width

Defines the minimum width of the app window.

movable

Whether the app window can be moved.

Defaults to True.

Has effect on macOS only.

opacity

Defines the opacity of a native OS window.

Value must be between 0.0 (fully transparent) and 1.0 (fully opaque).

resizable

Whether the app window can be resized.

Defaults to True.

shadow

Whether to display a shadow around the app window.

On Windows, doesn't do anything unless window is frameless.

Has effect on macOS and Windows only.

title_bar_hidden

Whether to hide the app window's title bar.

See WindowDragArea control that allows moving an app window with hidden title bar.

title_bar_buttons_hidden

Whether to hide the app window's title bar buttons.

Has effect on macOS only.

top

Defines the vertical position of a native OS window - a distance in virtual pixels from the top edge of the screen.

prevent_close

Set to True to intercept the native close signal. Could be used together with page.window.on_event() event handler and page.window-destroy() to implement app exit confirmation logic - see page.window.destroy() for code example.

progress_bar

The value from 0.0 to 1.0 to display a progress bar on Task Bar (Windows) or Dock (macOS) application button.

Has effect on Windows and macOS only.

skip_task_bar

Set to True to hide application from the Task Bar (Windows) or Dock (macOS).

visible

Whether to make the app window visible. Used when the app is starting with a hidden window.

The following program starts with a hidden window and makes it visible in 3 seconds:

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)

Note view=ft.AppView.FLET_APP_HIDDEN which hides app window on start.

width

Defines the width of the app window.

Methods

center()

Move app window to the center of the screen.

close()

Closes app window.

destroy()

Forces closing app window.

This method could be used with page.window.prevent_close = True to implement app exit confirmation:

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 yes_click(e):
page.window.destroy()

def no_click(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=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()

Brings app window to the foreground (on top of other windows).

Events

on_event

Fires when app window changes its state: position, size, maximized, minimized, etc.

Event handler argument is of type WindowEvent.