我正在尝试将一些 pygtk 音乐播放器代码移植到使用 gst 的发现者模块的 pygi。
from gi.repository import Gst, GstPbutils
def on_discovered(discoverer, ismedia):
print("%s -- %s" %( discoverer.tags.get('title', 'Unknown'),
discoverer.tags.get('artist', 'Unknown')))
Gst.init(None)
location = "file:///srv/Music/molly_hatchet-the_creeper.mp3"
discoverer = GstPbutils.Discoverer()
discoverer.discover_uri(location)
discoverer.connect('discovered', on_discovered)
当我尝试运行此程序时出现以下错误:
/usr/lib/python2.7/dist-packages/gi/types.py:43: Warning: g_object_get_qdata: assertion `G_IS_OBJECT (object)' failed
return info.invoke(*args, **kwargs)
/usr/lib/python2.7/dist-packages/gi/types.py:43: Warning: g_object_ref_sink: assertion `G_IS_OBJECT (object)' failed
return info.invoke(*args, **kwargs)
** (python:21482): CRITICAL **: pygobject_register_wrapper: assertion `PyObject_TypeCheck(self, &PyGObject_Type)' failed
/usr/lib/python2.7/dist-packages/gi/types.py:43: Warning: g_object_unref: assertion `G_IS_OBJECT (object)' failed
return info.invoke(*args, **kwargs)
不幸的是,关于这个 pygi 模块的文档似乎有点稀疏。
现在我已经恢复使用 pygtk,但我很想知道如何让它与 pygi 一起工作,因为这将是 Ubuntu 的发展方向。
答案1
错误信息显示“python 2.7”,但您正在导入 python3 模块。请确保使用类似
#!/usr/bin/env python3
在脚本顶部,或者使用 python3 明确调用它。请注意,似乎有python3 的 GstPbutils 也存在问题:(