我刚开始使用 python 并为自己编写了一个漂亮的小脚本,它使用 通过 pynotify 的 gnome 通知,像这样:
import pynotify
pynotify.init("Application")
alert = pynotify.Notification("Title", "Description")
alert.show();
这很好用,但问题是,当我连续两次执行脚本时,第一个通知需要一段时间才能消失。之后显示第二个。由于第一个在我第二次执行脚本时已过时,因此我想在显示第二个(或替换它)之前以编程方式删除第一个。这可能吗?如果可能,如何实现?
一些上下文来理解我为什么需要这个:因为我经常将我的鼠标从左手切换到右手,或者反过来,我想要一个脚本来反转这种偏好并在通知中告诉我“已切换”左撇子”和“转为右撇子”。
最佳答案
我搜索了一会儿,得出的结论是在这种情况下不可能。
您可以使用 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 上,可能依赖于系统)。
关于python - 如何删除过时的 pynotify 通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7149161/