如何删除过时的pynotify通知?

7 python gnome pynotify

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

import pynotify

pynotify.init("Application") 
alert = pynotify.Notification("Title", "Description") 
alert.show();
Run Code Online (Sandbox Code Playgroud)

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

一些上下文来理解我为什么需要这个:因为我经常将鼠标从左手切换到右手,反之亦然,我想要一个只是反转这个偏好的脚本并在通知中告诉我"切换到左边 - 递给"和"改为右手".

小智 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()
Run Code Online (Sandbox Code Playgroud)

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

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