There are occasions in which your application wants to notify the user
about something: software updates are available, a new instant message
have been received, the 300 page print job has finally finished, etc.
To keep notifications easy to port cross-platform, don't make
them interactive. For example Ubuntu does not support notifications
that require user interaction.
如何着手写
检查
keyring
如何处理跨平台问题(这是一个python库,它插入各种自动检测的密钥链后端进行存储)Growl没有与OSX捆绑,你必须单独安装它,OSX没有任何内置的通知系统。
对于unix,您可能希望像前面提到的那样连接到dbu(作为回退,请注意dbu也可能在OSX中可用),但是KDE和Gnome都有类似于咆哮的库。分别为KDE的knotify和Gnome的libnotify。
对于windows,请查看Snarl,如果不可用,则返回到通知气泡(使用ToasterBox行中的内容)
千万别想让通知变得粘乎乎的。太愚蠢了,太迟钝了,太烦人了。另外,由于像您这样的人,它在大多数通知系统中都不可用。
最后,即使没有任何Python库,也可以使用
ctypes
来访问它们。Here's a desktop notifier I wrote a few years ago using wxPython-它在Windows和Linux上的行为完全相同,还应该在OSX上运行。它包含一个线程事件循环,可用于设置包含可单击图标和消息的通知窗口的动画。它可能需要一些调整,以定制自己的目的,但地面工作已经完成。
在2010年的Pycon大会上有一个presentation on cross-platform Python development。 还有一个关于它的html页面,其中包含一些跨平台通知的建议。但是,我在网上找不到它了,但我保存了一个本地副本,这是关于通知的部分:
链接的python文件非常有趣,我认为您应该能够像现在这样使用链接的python文件。代码也非常清楚,所以您将很快看到它的作用。
最基本的方法是检测哪些通知系统可用,几乎与平台无关,并尝试按特定顺序使用它们,但如果需要,可以返回到更简单的系统。这样,如果用户安装了例如Growl的软件,不管平台是什么,它都会使用它。
您可以对其进行调整,以便为上述三种通知系统之外的其他通知系统提供支持。
相关问题 更多 >
编程相关推荐