【传奇开心果系列】Flet框架实现的异步管理独立多窗口自定义模板特色和实现原理深度解析

一、效果展示截图

在这里插入图片描述
在这里插入图片描述

二、应用场景

  1. 多任务处理:适用于需要同时运行多个子任务或子窗口的应用程序,每个子窗口可以独立执行不同的功能。
  2. 客户端-服务器架构:适用于需要与服务器进行通信的应用程序,例如实时数据更新、消息传递等。
  3. 桌面应用开发:适用于开发复杂的桌面应用程序,特别是那些需要多个窗口协同工作的场景。

三、特色说明

  1. 异步处理

    • 使用 asyncio 进行异步处理,确保主界面和子窗口之间的通信不会阻塞主线程。
    • 通过 asyncio.start_server 启动一个异步的 socket 服务器,处理客户端连接和数据传输。
  2. 多窗口管理

    • 主界面通过按钮启动不同的子窗口,每个子窗口独立运行。
    • 子窗口的启动通过 os.system 调用独立的 Python 脚本,确保每个子窗口在单独的进程中运行。
  3. 模块化设计

    • child_common.py 提供了通用的子窗口处理逻辑,避免了代码重复。
    • 每个子窗口脚本(如 child1.py, child2.py, child3.py)只需要调用 setup_child_window 函数,传入相应的子窗口 ID 即可。
  4. 灵活的 UI 组件

    • 使用 Flet 库构建用户界面,支持丰富的 UI 组件,如按钮、文本等。
    • 通过 ft.Page 对象管理页面状态和组件,确保界面的动态性和交互性。
  5. 始终置顶

    • 子窗口可以通过设置 page.window.always_on_top = True 来确保始终显示在最上层,方便用户操作。
  6. 数据通信

    • 子窗口通过 socket 与主窗口或其他子窗口进行通信,实现数据的实时传递和同步。
    • 通过 asyncio.open_connection 建立连接,并使用 readerwriter 进行数据读写。

四、概括说明

该模板通过异步处理和多窗口管理,提供了一个灵活且强大的框架,适用于需要多任务处理和实时数据通信的桌面应用程序开发。模块化的设计使得代码更加简洁和易于维护。这个应用涉及多线程、多进程和异步编程,用于管理和控制多个独立窗口。具体来说:管理和控制多个独立窗口。

五、Flet异步多窗口Socket通信应用实现原理分析

这段代码实现了一个基于Flet框架的多窗口应用,主窗口和子窗口之间通过Socket进行异步通信。下面是对实现原理的详细分析:

(一)系统架构

1. 多进程架构

  • 主窗口进程:运行Socket服务器,管理子窗口的启动
  • 子窗口进程:多个独立的Flet应用,作为Socket客户端连接到主窗口

2. 通信机制

  • 使用TCP Socket进行进程间通信
  • 主窗口作为服务器监听端口18585
  • 子窗口作为客户端连接到主窗口

(二)主窗口实现原理

1. Socket服务器

def start_socket(page):
    async def handle_client(reader, writer):
        data = await reader.read(100)
        message = data.decode()
        addr = writer.get_extra_info("peername")
        print(f"Received {
     
     message} from {
     
     addr}")
        if message == "bye":
            writer.close()
            await writer.wait_closed()
        else:
            response = f"Echo: 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

传奇开心果编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值