我刚开始使用python并为自己写了一个很好的小脚本 gnome通过pynotify通知,如下:
import pynotify
pynotify.init("Application")
alert = pynotify.Notification("Title", "Description")
alert.show();
这很好用,但问题是,当我连续两次执行脚本时,第一个通知需要一段时间才能消失。第二个显示在那之后。由于第一个在我第二次执行脚本时已经过时,我想在显示第二个之前以编程方式删除第一个(或替换它)。这是可能的,如果是的话,怎么样?
了解我为什么需要这个的一些上下文:由于我经常将鼠标从左手切换到右手,反之亦然,我想要一个只反转这个偏好的脚本并在通知中告诉我“切换左撇子“和”改为右撇子“。
答案 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上,可能是系统依赖)。