python 如何执行下一个函数时自动停止现在的函数?

如图,想要前三个函数任意一个执行时第四个函数的弹窗自动消失,应如何实现?

img

以下回答来自chatgpt:
Python 中有多种方式可以使正在执行的函数停止。以下是一些常用的方式:

  1. 使用多进程或多线程:在多进程或多线程编程中,每个进程或线程都有一个独立的执行空间,可以通过停止和终止进程或线程来停止正在执行的函数。

  2. 使用 signal 模块:signal 模块提供了处理各种信号的功能,可以使用 signal 模块中的 signal 方法向正在执行的进程发送中断信号(例如 SIGINT 信号),从而停止当前函数执行。例如:

     import signal
     import time
    
     def handler(signum, frame):
         print('Received SIGINT, stopping function execution')
         raise KeyboardInterrupt
    
     signal.signal(signal.SIGINT, handler)
    
     def long_running_function():
         try:
             while True:
                 time.sleep(1)
         except KeyboardInterrupt:
             print('Function stopped by user')
    
     long_running_function()
    

    在上面的示例中,我们定义了一个信号处理函数 handler,它会在收到 SIGINT 信号时抛出 KeyboardInterrupt 异常,从而停止 long_running_function 函数的执行。

  3. 使用 asyncio 模块:asyncio 是一个异步 I/O 框架,其中的协程(coroutine)可以通过 asyncio 中提供的 cancel 方法来停止正在执行的协程。例如:

     import asyncio
    
     async def long_running_coroutine():
         try:
             while True:
                 await asyncio.sleep(1)
         except asyncio.CancelledError:
             print('Coroutine stopped by user')
    
     async def main():
         task = asyncio.create_task(long_running_coroutine())
         await asyncio.sleep(3)
         task.cancel()
    
     asyncio.run(main())
    

    在上面的示例中,我们定义了一个长时间运行的协程 long_running_coroutine,并使用 asyncio.create_task 方法创建了一个 asyncio.Task 对象来管理协程的执行。在 main 函数中,我们等待 3 秒钟后,使用 task.cancel 方法来停止正在执行的协程。

模态窗体,没人点击的情况下会阻塞代码执行
所以跟本不存在弹窗没消除的情况下另外的函数在执行的情况
除非你引入多线程或者多进程