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

如何在Flet应用中实现Python脚本的自重启功能?

Flet应用重启功能实现方案

要在Flet里实现应用重启,核心思路是通过操作系统层面重启当前Python进程(Flet本身没有内置重启API)。具体修改如下:

  1. 先导入必要的模块:
import sys
import os
  1. 修改你的close_app函数,添加重启逻辑:
def close_app(e):
    page.banner.open = False
    page.update()
    # 重启当前Python进程
    os.execv(sys.executable, [sys.executable] + sys.argv)

完整修改后的代码示例

import sys
import os
import flet as ft

# 假设你的全局变量已定义
data = {"theme": "light"}
font = "Arial"
buttonsStyle = ft.ButtonStyle()

def theme_changed(e):
    print(data["theme"])
    data["theme"] = str(theme_dd.value)
    print(data["theme"])

    def close_app(e):
        page.banner.open = False
        page.update()
        # 执行应用重启
        os.execv(sys.executable, [sys.executable] + sys.argv)

    def restar_late(e):
        page.banner.open = False
        page.update()

    page.banner = ft.Banner(
        leading=ft.Icon(ft.icons.SETTINGS, color=ft.colors.RED_100, size=40),
        content=ft.Text("Please restart the application\nto apply the changes", font_family=font),
        actions=[
            ft.ElevatedButton("Restart Now", style=buttonsStyle, on_click=close_app),
            ft.ElevatedButton("Restart Late", style=buttonsStyle, on_click=restar_late)
        ],
        open=True
    )
    page.update()

# 应用入口
if __name__ == "__main__":
    def main(page: ft.Page):
        global theme_dd
        theme_dd = ft.Dropdown(
            options=[
                ft.dropdown.Option("light"),
                ft.dropdown.Option("dark")
            ],
            on_change=theme_changed
        )
        page.add(theme_dd)
    ft.app(target=main)

关键说明

  • os.execv会用新的Python进程替换当前进程,sys.executable指向当前Python解释器路径,sys.argv保留启动应用时的命令行参数,确保重启后的应用状态和初始启动一致。
  • 重启前调用page.update(),确保Banner关闭的界面状态生效,避免残留问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:55:00