2008-10-07 54 views
21

是否有可能在python中产生类似于JavaScript警报(“消息”)的警报,其中应用程序作为守护程序运行。Python中的警报框?

这将在Windows上运行,很可能XP,但2000和Vista也是非常现实的可能性。

更新:
这是为了在后台运行,并提醒当某些条件得到满足的用户,我的身影,提醒用户最简单的方法是将产生一个弹出,因为它需要立即处理,其他选项(如仅记录或发送电子邮件)效率不够高。

+1

我想一个更好的方式来说这是一个“后台进程”而不是一个守护进程。 – UnkwnTech 2008-10-07 05:25:36

回答

38
这个

什么:

import win32api 

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

此外:

win32api.MessageBox(0, 'hello', 'title', 0x00001000) 

会让框出现在其他窗口的顶部,紧急消息。其他选项请参阅MessageBox function

+0

这完全是我需要的,谢谢。 – UnkwnTech 2008-10-07 05:37:55

+2

有关此功能的更多信息,我发现这个:http://docs.activestate.com/activepython/2.4/pywin32/win32api__MessageBox_meth.html – UnkwnTech 2008-10-07 05:40:02

+11

我得到`ImportError:No module named win32api`。 – user 2012-05-28 11:00:52

-2

启动一个应用程序作为后台进程,该进程要么具有绑定到本地主机的TCP端口,要么通过文件进行通信 - 您的守护进程已打开该文件,然后执行echo "foo" > c:\your\file。例如,1秒钟没有任何活动后,显示消息并截断文件。

1

您可以在Python中使用win32库,这是OK或Cancel的经典示例。

import win32api 
import win32com.client 
import pythoncom 

result = win32api.MessageBox(None,"Do you want to open a file?", "title",1) 

if result == 1: 
print 'Ok' 
elif result == 2: 
print 'cancel' 

收集:

win32api.MessageBox(0,"msgbox", "title") 
win32api.MessageBox(0,"ok cancel?", "title",1) 
win32api.MessageBox(0,"abort retry ignore?", "title",2) 
win32api.MessageBox(0,"yes no cancel?", "title",3) 
3

GTK可能是一个更好的选择,因为它是跨平台的。它可以在Ubuntu上运行得很好,并且在安装GTK和Python绑定时应该可以在Windows上正常工作。

from gi.repository import Gtk 

dialog = Gtk.MessageDialog(None, 0, Gtk.MessageType.INFO, 
      Gtk.ButtonsType.OK, "This is an INFO MessageDialog") 
dialog.format_secondary_text(
    "And this is the secondary text that explains things.") 
dialog.run() 
print "INFO dialog closed" 

您可以看到其他示例here。 (pdf

传递的参数应该是gtk.window父级(或无),DestroyWithParent,消息类型,消息按钮,标题。