【问题标题】:How do I only clear one notification message using Notify and python?如何使用 Notify 和 python 只清除一条通知消息?
【发布时间】:2026-01-22 23:15:01
【问题描述】:

我编写了一个小的 Python 脚本,它使用通知在发生某些事情时提醒用户。该脚本在基于 cinnamon 或 gnome 的桌面环境中运行。

脚本的本质是这样的:

from gi.repository import Notify

Notify.init("My Program Name")
notification = Notify.Notification.new("Hi")
notification.show()
Notify.uninit()

Notify.init("My New Program Name")
notification = Notify.Notification.new("Hi")
notification.show()
Notify.uninit()

from subprocess import call
call(['notify-send', 'hello', 'world'])
call(['notify-send', 'hello', 'again'])

如您所见,脚本使用 Notify 发送前两条消息,并使用子进程调用发送最后两条消息。

运行此命令时会发生 4 条消息显示为通知。

如果我点击任一“通知”消息,它们都会同时被删除。

如果我点击任一“子进程调用”,它们会根据我点击的分别被删除。这是我希望“通知”消息的行为。

正如您在我提供的代码中看到的那样,我尝试使用新的程序名称重新启动通知,以尝试使消息似乎来自不同的来源,但消息仍会同时被删除无论我点击哪一个。

如何在使用通知时一次只删除一条消息?

(我不能只使用子流程调用,因为我还想在通知中添加一个操作,我认为通知发送是不可能的。)

【问题讨论】:

    标签: python gnome notify cinnamon libnotify


    【解决方案1】:

    我通过添加解决了这个问题:

    notification.set_hint('resident', GLib.Variant.new_boolean(True))
    

    这会将通知设置为仅在单击通知时才清除。

    【讨论】:

      最近更新 更多