如果我在终端中使用以下命令创建一个快速项目:
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 type
PyGtkGenericCellRenderer'小于父类型的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。它目前还不精确,但我已经为它提交了反向移植请求。