如何移除过时的pynotify通知?
我刚开始学习Python,写了一个小脚本,利用pynotify来发送gnome通知,代码如下:
import pynotify
pynotify.init("Application")
alert = pynotify.Notification("Title", "Description")
alert.show();
这个脚本运行得很好,但有个问题,就是当我连续执行两次这个脚本时,第一次的通知需要一段时间才会消失。第二个通知是在第一次消失之后才显示出来。因为当我第二次执行脚本时,第一次的通知已经不再需要了,所以我想在显示第二个通知之前,先把第一个通知去掉(或者替换掉)。这样做可以吗?如果可以的话,怎么做呢?
为了让你更明白我为什么需要这个功能:我经常会把鼠标从左手换到右手,反之亦然,所以我想要一个脚本,能够自动切换这个设置,并通过通知告诉我“切换到左手操作”和“切换到右手操作”。
1 个回答
6
我找了一段时间,最后得出的结论是,在这种情况下是不可能的。
你可以使用 Notification.update()
来更新一个已经存在的通知对象。但是,你不能从系统中查询现有的通知来修改或隐藏它们。也许可以通过序列化把对象存储到某个地方,然后再恢复它来进行更新。但即便如此,你仍然需要知道通知的确切持续时间和你启动它时的时间戳,因为没有办法测试一个通知是否仍然可见。
下面是一个如何使用 update()
的简单示例。仅供参考,因为我觉得pynotify的文档几乎不存在:
#!/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上,可能与系统有关)。