python - Notify.Notification 中的 PyGObject 进度条

标签 python python-3.x notifications gtk3 pygobject

我在 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 类型可以是 int32int64double 以及可能大于 int32< 的其他数字类型,但不是 byteint16,任何 uint 类型,例如 uint32,或者(我假设) 任何非数字类型。据我所知,只需使用 int32
  • 虽然我在其他步骤中使用了像 Name 这样的通用名称,但是 set_hint 的值必须是 'value' 小写 v .

另外值得注意的是,我不确定这是否是一种通用方法,或者它是否只适用于 xfce4-notifyd,我只使用 xfce4-notifyd,所以现在我不担心,但如果我调查这个我会尽量记得更新我的答案。或者,如果其他人知道此问题的答案,请告诉我。

关于python - Notify.Notification 中的 PyGObject 进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41888204/

相关文章:

python - DNA 从字符串列表中找到所有匹配项 (python 2.7)

iOS 10 本地通知 : show notification content on lock screen

crash - MPMusicPlayerController:当 iPod App 在后台终止时,iPod 停止发送通知

python - 截断日期时间对象 pandas

python - 使用 SQLAlchemy 进行简单验证

python - 当 DateTimeField 等于当前日期和时间时,Django 执行函数

python - 如何获得句子文本中二元组的概率?

python - 在 Python 中将日期作为一行数据透视

android - 如何停止在每次启动 android 应用程序时收到通知?

python - 表的 "id"列指定多个默认值