7

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

import pynotify

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

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

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

4

1 回答 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 上,可能是系统依赖项)。

于 2011-08-26T14:55:50.567 回答