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

Rei*_*ica 46 python desktop notifications cross-platform growl

我在Python中寻找类似Growl的,类似于气球提示的通知库.想象一下编写如下代码:

>>> import desktopnotifier as dn
>>> dn.notify('Title', 'Long description goes here')
Run Code Online (Sandbox Code Playgroud)

..并且会通过Mac,Windows和Linux上的相应工具提示进行通知.这样的图书馆存在吗?如果没有,我将如何自己写一个?

  • Mac是否附带默认通知程序?是咆哮我应该单独安装的东西吗?
  • 在Windows上,我认为这可能需要pywin32
  • 在Linux上,假设GNOME,是否有GNOME API(使用gnome-python)来做到这一点?
  • 我可以在所有平台上发出"粘性"通知(即,不要淡出)吗?

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

Ste*_*ald 19

这是我几年前使用wxPython编写的桌面通知程序 - 它在Windows和Linux上的行为相同,也应该在OSX上运行.它包含一个线程事件循环,可用于为包含可单击的图标和消息的通知窗口设置动画.它可能需要进行一些调整才能为您自己的目的进行自定义,但是基础工作已经完成.

  • 这个发布的许可是什么?编辑:没关系......这是一种BSD许可证...感谢您发布代码.找到我想要学习的库或事物是一件很痛苦的事情,这样我的代码将来不会有任何风险.但是,在信用到期的情况下给予信用我没有问题;) (3认同)

Rab*_*ski 17

在Pycon 2010上有一个关于跨平台Python开发演示文稿.还有一个关于它的html页面,其中包含一些跨平台通知的建议.但是,我不再在网上找到它,但我保存了一份本地副本,这是通知的一部分:

在某些情况下,您的应用程序想要通知用户有关某些事情:软件更新可用,已收到新的即时消息,300页打印作业已完成,等等.

  • 要使通知易于跨平台移植,请不要使它们具有交互性.例如,Ubuntu不支持需要用户交互的通知.
  • 这些是最重要的图书馆:

    o Linux:pynotify.

    o Mac OS X:通常会安装非标准的Growl.

    O窗口:一个很好的wxPython的解决方案是ToasterBox安德烈Gavana,它模仿的Firefox或Thunderbird通知的样子.

  • 对于Phatch,我们开发了一个库,在一个API中统一这三个系统:phatch/lib/notify.py.

链接的python文件非常有趣,我认为你应该能够使用链接的python文件.代码也很清晰,所以你很快就会看到它的作用.

基本方法是检测哪些通知系统可用,几乎与平台无关,并尝试按特定顺序使用它们,但如有必要,可以回退到更简单的系统.这样,如果用户安装了例如Growl,它将使用它,而不管平台如何.

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


小智 7

  • 怎么去写它

    检查如何keyring处理跨平台问题(这是一个python库,它插入各种自动检测的钥匙串后端进行存储)

  • Growl不与OSX捆绑在一起,你必须单独安装它,OSX没有附带任何内置的通知系统.

  • 对于unix,你可能想要像已经提到的那样挂钩到DBus(作为后备,注意dbus也可能在OSX中可用),但是KDE和Gnome都有类似Growl的库.KDE的KNotification和Gnome的libnotify.

  • 对于Windows,请查看Snarl,如果不可用,请回到通知气泡(使用ToasterBox行的内容)

永远不要想到通知粘性.这是愚蠢的,它不敏感,而且令人讨厌.此外,由于像你这样的人,它在大多数通知系统中都不可用.

最后,即使没有任何Python lib,您也可以使用它ctypes来访问它们.

  • "*OSX没有附带任何内置通知系统*"对于最新的OSX版本不适用. (2认同)

tgh*_*ghw 0

为了获得良好的跨平台支持,我会考虑PyQt。它会给你的图书馆增加一些分量,但他们已经很好地解决了大部分问题。