Python中的跨平台桌面通知程序

2024-06-06 00:35:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python中寻找类似于Growl的Windows气球提示通知库。想象一下编写代码的样子:

>>> import desktopnotifier as dn
>>> dn.notify('Title', 'Long description goes here')

。。这将通知与相应的工具提示在Mac,Windows和Linux上。有这样的图书馆吗?如果没有,我怎么能自己写呢?

  • Mac有默认的通知程序吗?我应该单独安装Growl吗?
  • 在Windows上,我认为这可能需要pywin32
  • 在Linux上,假设是GNOME,是否有一个GNOMEAPI(使用GNOMEPython)可以做到这一点?
  • 我可以在所有平台上发出“粘滞”通知(即永远不会淡出)吗?

更新:我的偏好是不依赖于像PyQT4和wxPython这样的大型GUI框架来完成这样的简单任务。


Tags: 代码importtitlelinuxwindowsmacasnotify
3条回答
  • 如何着手写

    检查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页面,其中包含一些跨平台通知的建议。但是,我在网上找不到它了,但我保存了一个本地副本,这是关于通知的部分:

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.
  • These are the most important libraries:

    o Linux: pynotify.

    o Mac OS X: Growl, which is not standard, is usually installed.

    o Windows: a good wxPython solution is ToasterBox of Andrea Gavana, which mimics the look of Firefox or Thunderbird notifications.

  • For Phatch we developed a library that unifies these three systems in one API: phatch/lib/notify.py.

链接的python文件非常有趣,我认为您应该能够像现在这样使用链接的python文件。代码也非常清楚,所以您将很快看到它的作用。

最基本的方法是检测哪些通知系统可用,几乎与平台无关,并尝试按特定顺序使用它们,但如果需要,可以返回到更简单的系统。这样,如果用户安装了例如Growl的软件,不管平台是什么,它都会使用它。

您可以对其进行调整,以便为上述三种通知系统之外的其他通知系统提供支持。

相关问题 更多 >