如何删除过时的pynotify通知?

时间:2011-08-22 14:41:34

标签: python gnome pynotify

我刚开始使用python并为自己写了一个很好的小脚本 gnome通过pynotify通知,如下:

import pynotify

pynotify.init("Application") 
alert = pynotify.Notification("Title", "Description") 
alert.show();

这很好用,但问题是,当我连续两次执行脚本时,第一个通知需要一段时间才能消失。第二个显示在那之后。由于第一个在我第二次执行脚本时已经过时,我想在显示第二个之前以编程方式删除第一个(或替换它)。这是可能的,如果是的话,怎么样?

了解我为什么需要这个的一些上下文:由于我经常将鼠标从左手切换到右手,反之亦然,我想要一个只反转这个偏好的脚本并在通知中告诉我“切换左撇子“和”改为右撇子“。

1 个答案:

答案 0 :(得分:6)

我搜了一会儿,得出结论,在这种情况下不可能

您可以使用Notification.update()更新现有通知对象。但是您无法从系统中查询现有的内容来修改或隐藏它们。可以通过序列化将对象存储在某处并将其恢复以进行更新。但即便如此,您仍然必须知道通知的确切持续时间以及启动时的时间戳,因为无法测试通知是否仍然可见。

简短示例如何使用update()。仅供参考,因为pynotify doc似乎对我来说几乎不存在:

#!/usr/bin/env python

import pynotify

pynotify.init("MyApplication")

a = pynotify.Notification("Test notification", "Lorem ipsum op")
a.show()
raw_input("Press return to update the notification")
a.update("Updated notification", "Ipsum lorem still op")
a.show()

更新后您必须致电show()。否则,将不会显示更改。

Notification对象中还有一个close()函数,但这对我没有任何作用(在Linux / Gnome上,可能是系统依赖)。