快速项目系统 - 通知不起作用(“导入 pynotify”失败)

快速项目系统 - 通知不起作用(“导入 pynotify”失败)

如果我在终端中使用以下命令创建一个快速项目:

 quickly create ubuntu-application helloworld

然后在 HelloworldWindow.py 中添加以下几行,

import sys
import pynotify

当我想要使用以下命令运行应用程序时,“import pynotify”行在我的系统上产生以下错误输出

quickly run

错误输出:

/usr/lib/python2.7/dist-packages/gobject/constants.py:24: 警告:g_boxed_type_register_static:断言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'小于父类型的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: assertion节点 != NULL' 从 gtk 导入 _gtk 失败

该应用程序无法启动。

但如果我想运行以下 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()

例如,通过将代码保存在文件名“notify.py”中,我可以使用终端中的命令运行该代码:

python notify.py

并且通知工作正常!

通过 quick 创建的 python 应用程序有什么问题?为什么导入不起作用?我是 quick 和 python 的新手。

答案1

我刚刚遇到了完全相同的问题。

这是我的解决方案。

from gi.repository import Notify

Notify.init ('Application')
notification = Notify.Notification.new ('Title', 'Message', 'dialog-information')
notification.show ()

答案2

pynotify 是为与 pygtk 配合使用而编写的,pygtk 是通过 Python 使用 GTK 的一种较旧的方法。新方法称为 gobject 内省,并具有以下导入:

from gi.repository import Gtk

您不能在同一个应用程序中使用新旧系统,并且快速模板使用新系统,因此您不能将 pynotify 与其一起使用。

我有一个与新系统兼容的替代品:通知2。它目前还不精确,但我已经为它提交了反向移植请求。

相关内容