2017-01-27 1 views
2

Ich benutze PyGObject mit Python 3 und ich möchte eine Benachrichtigung mit einem Notify.Notification anzeigen, die einen Fortschrittsbalken enthält. Der Fortschrittsbalken muss nicht eigenständig/asynchron oder sonstwie aktualisiert werden - er kann (und sollte) statisch sein und nur dann aktualisiert werden, wenn ich manuell einen neuen Wert einstelle und dann die anzuzeigende Benachrichtigung erzähle. Ich bin auf etwas wie eine Volumenbenachrichtigung angewiesen, die das neue Volumen zeigt, wenn Sie es ändern.PyGObject Fortschrittsbalken in Notify.Notification

Ich konnte keine Möglichkeit finden, dies zu tun Dokumentation suchen wie this, ist dies mit PyGObject möglich? Gibt es alternativ eine andere Python 3-Bibliothek, die dieses Verhalten zulässt?

Ich zeige derzeit Benachrichtigungen mit textbasierten Fortschritt ähnlich wie diese:

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() 
    ... 

Antwort

1

So nach viel mehr auf der Suche ich this Thread ist auf der Xfce-Foren diskutieren die Verwendung von gefundenen Sende-notify xfce4- zu erhalten notifyd "gauges" und konnte herausfinden, wie man Notify.Notification.set_hint() verwendet. Also, wenn Sie Ihre Mitteilung wollen einen Fortschrittsbalken/Statusleiste/Lehre zeigen, können Sie die folgenden:

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)) 

Points of note:

  • Einrichten einer Zusammenfassung und Körper, wie gesehen in Die ursprüngliche Frage scheint sinnlos zu sein, wenn man diese Methode benutzt, da keiner der beiden nur den Fortschrittsbalken anzeigt. Ein Icon/Bild kann immer noch neben dem Fortschrittsbalken angezeigt werden, z. mit notification.set_image_from_pixbuf()
  • Dem kann GLib.Variant Typ int32, int64, double und möglicherweise andere von numerischem Typ größer als int32 sein, aber nicht byte oder int16 jeder uint Typen wie uint32 oder (Ich würde davon ausgehen) jede nicht numerischer Typ Verwenden Sie einfach int32 als ich sagen kann.
  • Während ich mit generischen Namen wie Name für andere Schritte, muss der Wert für set_hint seine 'value' mit einem kleinen v.

auch erwähnenswert, ich bin mir nicht sicher, ob dies eine Unniversal Methode ist oder wenn es funktioniert nur für xfce4-notifyd, ich benutze nur xfce4-notifyd, also jetzt bin ich nicht besorgt, aber wenn ich mir das anschaue, werde ich versuchen, daran zu denken, meine Antwort zu aktualisieren. Alternativ, wenn jemand anderes die Antwort weiß, lass es mich wissen.