Sistema de projeto rápido - As notificações não funcionam (a “importação de pynotify” falha)

3

Se eu criar um projeto rápido com o seguinte comando no terminal:

 quickly create ubuntu-application helloworld

e adicione no HelloworldWindow.py as seguintes linhas,

import sys
import pynotify

a linha "importar pynotify" produz a seguinte saída de erro no meu sistema quando eu quero executar o aplicativo com

quickly run

erro-saída:

/usr/lib/python2.7/dist-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion g_type_from_name (name) == 0' failed import gobject._gobject /usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:40: Warning: specified class size for typePyGtkGenericCellRenderer' is smaller than the parent type's GtkCellRenderer' class size from gtk import _gtk /usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:40: Warning: g_type_get_qdata: assertionnode != NULL' failed from gtk import _gtk

O aplicativo não será iniciado.

Mas se eu quiser executar o seguinte aplicativo python

 #!/usr/bin/python
 import sys
 import pynotify

 if __name__ == "__main__":
if not pynotify.init("icon-summary-body"):
    sys.exit(1)

n = pynotify.Notification(
    "Notification",
    "Hello notify! It works!",
    "notification-message-im")
n.show()

por exemplo. salvando o código em um nome de arquivo "notify.py", eu sou capaz de executar o código com o comando no terminal:

python notify.py

e a notificação funciona bem!

Qual é o problema com a aplicação rápida de python? Por que a importação não está funcionando? Eu sou novo com rapidez e python.

    
por Marian Lux 26.06.2012 / 13:16

2 respostas

7

Acabei de encontrar exatamente o mesmo problema.

Aqui está minha solução.

from gi.repository import Notify

Notify.init ('Application')
notification = Notify.Notification.new ('Title', 'Message', 'dialog-information')
notification.show ()
    
por RobinJ 26.06.2012 / 14:32
2

pynotify foi escrito para trabalhar com o pygtk, uma maneira antiga de usar o GTK através do Python. O novo método é chamado de introspecção de objetos e tem importações como:

from gi.repository import Gtk

Você não pode usar o sistema antigo e o novo no mesmo aplicativo, e o modelo rápido usa o novo sistema, portanto você não pode usar pynotify com ele.

Eu tenho um substituto compatível com o novo sistema: notify2 . Ainda não está preciso, mas enviei um pedido de backport para ele.

    
por Thomas K 26.06.2012 / 14:32