You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术问询:Flet应用是否支持同时打开多个窗口?

Flet 多窗口实现方案

Flet 完全支持创建多个独立窗口,能够满足你“一个窗口常驻显示、另一个按需调用打开”的需求,无需依赖路由切换或在同一页面堆叠组件。

核心实现思路

通过 flet.Window 类可以直接创建独立于主窗口的新窗口,主窗口保持常驻,通过触发事件(比如按钮点击)来唤起次级窗口,两者的UI和生命周期完全独立。

完整代码示例

import flet as ft

# 控制次级窗口是否已打开,避免重复创建
secondary_window_instance = None

def open_secondary_window():
    global secondary_window_instance
    if secondary_window_instance is not None and secondary_window_instance.is_open:
        return  # 窗口已打开时不再重复创建
    
    # 初始化次级窗口
    secondary_window_instance = ft.Window(
        title="按需打开的次级窗口",
        width=400,
        height=300,
        resizable=True,
        left=200,
        top=200
    )

    # 构建次级窗口的UI内容
    secondary_window_instance.content = ft.Column(
        controls=[
            ft.Text("这是独立的次级窗口", size=18),
            ft.ElevatedButton("关闭窗口", on_click=lambda e: secondary_window_instance.close())
        ],
        alignment=ft.MainAxisAlignment.CENTER,
        horizontal_alignment=ft.CrossAxisAlignment.CENTER,
        spacing=20
    )

    # 监听窗口关闭事件,重置实例标记
    def on_window_close(e):
        global secondary_window_instance
        secondary_window_instance = None
    secondary_window_instance.on_close = on_window_close

    # 显示次级窗口
    secondary_window_instance.show()

def main(page: ft.Page):
    page.title = "主窗口(始终可见)"
    page.window.width = 600
    page.window.height = 400
    page.window.resizable = True

    # 添加唤起次级窗口的按钮
    page.add(
        ft.ElevatedButton(
            "打开次级窗口",
            on_click=lambda e: open_secondary_window(),
            size=ft.ButtonSize.LARGE
        )
    )

if __name__ == "__main__":
    ft.app(target=main)

关键说明

  • 主窗口会持续保持打开状态,点击按钮即可唤起独立的次级窗口,两者互不干扰。
  • 通过全局变量 secondary_window_instance 可以限制次级窗口只能打开一个,避免重复创建多个相同窗口。
  • 可以自定义次级窗口的属性:比如设置 always_on_top=True 让窗口置顶,或者调整 width/height 控制窗口大小。
  • 次级窗口的关闭事件可以用来清理实例标记,确保下次点击按钮能正常重新打开窗口。

内容的提问来源于stack exchange,提问作者Patricio VAZQUEZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 00:48:18