如何在不暂停运行程序的情况下使用python发出警报?

时间:2018-07-23 20:04:14

标签: python python-3.x winapi

我有一个python程序,当我使用win32api.py发出警报时,正在运行的程序暂停,即使警报启动,如何使它继续运行?

这是代码示例:

time.sleep(3)

win32api.MessageBox(0,'hello','text')

time.sleep(3)

os.system("TASKKILL /F /IM program.exe")

现在,当涉及到win32api.Mes ...部分时,它将暂停程序,直到我单击“确定”为止,如何防止其暂停?

谢谢!

1 个答案:

答案 0 :(得分:0)

如MSDN文档所述,MessageBox

  

显示一个模式对话框,其中包含系统图标,一组按钮以及特定于应用程序的简短消息,例如状态或错误信息。该消息框返回一个整数值,该整数值指示用户单击了哪个按钮。

A modal dialog box旨在阻止您的程序,直到程序被处理为止。这就是它的意思:它将程序置于特殊的“等待用户”模式。

此外,它显然无法返回用户单击的内容,除非等到用户单击某些内容为止。

如果您确实想使用MessageBox,则可以将其余工作推到另一个线程上,如下所示:

def background():
    time.sleep(3)
    os.system("TASKKILL /F /IM program.exe")
t = threading.Thread(target=background)
t.start()

time.sleep(3)
win32api.MessageBox(0,'hello','text')

或者,您可以create a modeless dialog,但是这需要将程序的其余部分与win32api事件循环集成。