2011-08-22 15 views
7

Sadece piton ile başlayan ve yazdığı kendime böyle pynotify aracılığı gnome-bildirimleri kullanan bir güzel, küçük senaryoyu:Eski bir pynotify bildirimi nasıl kaldırılır?

import pynotify 

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

Bu harika çalışıyor, ama iki defa komut dosyası yürütebilir zaman şey, Bir satır ilk bildirimin gitmesi için biraz zaman alır. İkincisi bundan sonra gösterilir. Komut dosyasını ikinci kez çalıştırdığımda birincisi geçersiz olduğundan, ikincisini göstermeden önce birincisini programlı olarak kaldırmak istiyorum (ya da değiştir). Bu mümkün mü ve eğer öyleyse, nasıl?

Neden buna ihtiyacım olduğunu anlamak için biraz bağlam: Fareyi sık sık soldan sağa ve başka bir şekilde değiştirdiğim için, yalnızca bu tercihi tersine çeviren ve bana bildiriminde bulunan bir komut dosyası istiyorum " solak "ve" sağ elle çevrildi ".

cevap

6

Bir süreliğine araştırdım ve bu durumda mümkün olmadığına vardık.

Varolan bir bildirim nesnesini güncellemek için Notification.update() kullanabilirsiniz. Ancak sistemdeki mevcutları sorgulamak veya gizlemek için sorgulayamazsınız. Nesneyi serileştirme yoluyla bir yere depolamak ve güncellemek için geri yüklemek mümkün olabilir. Ancak o zaman bile, bildirimin tam olarak ne zaman olduğunu ve bildirimi başlattığınız zaman damgasını bilmeniz gerekir, çünkü bir bildirimin hala görünür olup olmadığını sınamanın bir yolu yoktur.

Kısa bir örnek update()'u nasıl kullanır. Sadece referans için, pynotify doc denecek görünüyor beri bana:

#!/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() 

Sen güncellemeden sonra show() aramak zorunda. Aksi halde değişiklikler görüntülenmez.

Ayrıca Bildirim nesnesinde bir close() işlevi vardır, ancak bu benim için hiçbir şey yapmaz (Linux/Gnome'da, sisteme bağlı olabilir).

İlgili konular