我在 Python 3 中使用 PyGObject,我想使用 Notify.Notification
显示通知,其中有一个进度条。进度条不需要自己更新/异步更新或任何更新 - 它可以(并且应该)是静态的,仅在我手动设置新值然后告诉通知显示时更新。我正在寻找诸如音量通知之类的东西,它会在您更改音量时显示新音量。
我一直找不到任何方法来搜索文档,例如 this , 这可能使用 PyGObject 吗?或者是否有另一个 Python 3 库允许这种行为?
我目前正在显示与此类似的基于文本的进度通知:
import gi
gi.require_version('Notify', '0.7')
from gi.repository import Notify
def __init___(self):
...
Notify.init("Progress")
self.notification = Notify.Notification(summary='Progress', body='0%')
self.notification.set_image_from_pixbuf(notification_image)
...
def on_progress_update(self, progress):
...
self.notification.update('Progress', str(progress) + '%', None)
self.notification.show()
...
请您参考如下方法:
经过更多的搜索,我找到了 this xfce 论坛上的线程讨论了使用 send-notify 来获取 xfce4-notifyd“仪表”,并且能够弄清楚如何使用 Notify.Notification.set_hint()
。因此,如果您希望您的通知显示进度条/状态栏/仪表,您可以使用以下内容:
import gi
gi.require_version('Notify', '0.7')
from gi.repository import GLib, Notify
Notify.init("Name")
notification = Notify.Notification()
notification.set_hint('value', GLib.Variant.new_int32(volume))
注意事项:
- 设置摘要和正文,如原始问题中所示,如果使用此方法似乎毫无意义,因为它们都没有显示,只有进度条。图标/图像仍然可以显示在进度条旁边,例如使用
notification.set_image_from_pixbuf()
- GLib.Variant 类型可以是
int32
、int64
、double
以及可能大于int32< 的其他数字类型
,但不是byte
或int16
,任何uint
类型,例如uint32
,或者(我假设) 任何非数字类型。据我所知,只需使用int32
。 - 虽然我在其他步骤中使用了像
Name
这样的通用名称,但是set_hint
的值必须是'value'
小写 v .
另外值得注意的是,我不确定这是否是一种通用方法,或者它是否只适用于 xfce4-notifyd,我只使用 xfce4-notifyd,所以现在我不担心,但如果我调查这个我会尽量记得更新我的答案。或者,如果其他人知道此问题的答案,请告诉我。