如何使用Python使messagebox在几秒钟内自动关闭?

如何使用Python使messagebox在几秒钟内自动关闭?,python,Python,我已经知道如何用Python制作Messagebox了: import ctypes ctypes.windll.user32.MessageBoxW(0, 'test', "Reminding", 0) 但是,我希望它在出现后几秒钟内自动关闭 有什么方法可以实现吗 Psuedo代码: def AutoCloseMessageBoxW(text, title, close_until_seconds) 我已经找到了很多方法来通过其他语言(如C#和Java)实现这一点 但是我找不到任何方法用

我已经知道如何用Python制作Messagebox了:

import ctypes

ctypes.windll.user32.MessageBoxW(0, 'test', "Reminding", 0)
但是,我希望它在出现后几秒钟内自动关闭

有什么方法可以实现吗

Psuedo代码:

def AutoCloseMessageBoxW(text, title, close_until_seconds)
我已经找到了很多方法来通过其他语言(如C#和Java)实现这一点


但是我找不到任何方法用Python来实现它。

代码转储虽然可以提供解决方案,但对于试图从中学习的人来说可能不清楚。你能用几句话描述一下你的方法的关键元素以及它是如何工作的/为什么工作的吗?如果有一个线程通过标题杀死一个窗口,这是非常危险的,因为标题不能保证是唯一的。特别是,如果在用户关闭第一个消息框后,您收到第二个消息框,那么代码转储虽然可以提供解决方案,但对于试图从中学习的人来说可能不清楚。你能用几句话描述一下你的方法的关键元素以及它是如何工作的/为什么工作的吗?如果有一个线程通过标题杀死一个窗口,这是非常危险的,因为标题不能保证是唯一的。特别是在用户取消第一个消息框后,如果您收到第二个消息框,则更应如此。您通过
user32
调用的标准Windows消息框没有任何内置的自动关闭机制。如果C#和Java允许这样做,那是因为他们创建了自己的消息框实现,其工作方式不同。您通过
user32
调用的标准Windows消息框没有任何内置的自动关闭机制。如果C#和Java允许这样做,那是因为他们创建了自己的消息框实现,其工作方式不同。
import ctypes
import threading
import time
#ctypes.windll.user32.MessageBoxA(0, 'test', "Reminding", 0)

def worker(title,close_until_seconds):
    time.sleep(close_until_seconds)
    wd=ctypes.windll.user32.FindWindowA(0,title)
    ctypes.windll.user32.SendMessageA(wd,0x0010,0,0)
    return

def AutoCloseMessageBoxW(text, title, close_until_seconds):
    t = threading.Thread(target=worker,args=(title,close_until_seconds))
    t.start()
    ctypes.windll.user32.MessageBoxA(0, text, title, 0)


AutoCloseMessageBoxW('112','TEST_CLOSE',3)