![移植“import gobject”以使用 GObject-Introspection。(PyGTK 到 PyGI 和 GTK 3)](https://linux22.com/image/1093697/%E7%A7%BB%E6%A4%8D%E2%80%9Cimport%20gobject%E2%80%9D%E4%BB%A5%E4%BD%BF%E7%94%A8%20GObject-Introspection%E3%80%82%EF%BC%88PyGTK%20%E5%88%B0%20PyGI%20%E5%92%8C%20GTK%203%EF%BC%89.png)
我一直在尝试从 PyGTK 移植一个库以使用 GI 和 GTK3。问题是我找不到任何特定于 gobject 导入的资源,只能找到 GTK 的资源。我希望如果有人能帮我翻译以下内容,我就能掌握如何做这些事情。GTK 本身似乎有相当好的文档记录,但我找不到任何关于这个的内容。
__gsignals__ = {'cell-edited' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE,
(gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT,
gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT)), 'selection-changed' :
(gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,))}
我的假设是,由于我找不到任何具体的文档,所以这将是一个改变常量名称的问题,但我找不到任何替代品。
答案1
我觉得我已经破解了代码,因为我用 dir() 查找了 GObject 类中所有我能找到的东西 =>
G_SIGNAL_RUN_FIRST
在枚举中找到GSignalFlags
,翻译为GObject.SignalFlags.RUN_FIRST
。这是一致的,因此G_SIGNAL_MATCH_ID
在枚举中找到GSignalMatchType
翻译为GObject.SignalMatchType.ID
。
虽然不是很明显,但是一旦你知道要寻找什么就很容易了。
答案2
根据之前的评论,您要求的翻译如下:
from gi.repository import GObject
__gsignals__ = {'cell-edited': (GObject.SignalFlags.RUN_LAST,
GObject.TYPE_NONE,
(GObject.TYPE_PYOBJECT, GObject.TYPE_PYOBJECT, GObject.TYPE_PYOBJECT, GObject.TYPE_PYOBJECT, GObject.TYPE_PYOBJECT)),
'selection-changed': (GObject.SignalFlags.RUN_LAST, GObject.TYPE_NONE, (GObject.TYPE_PYOBJECT,))}
但是,根据我自己的经验,某些 Python 类型以某种方式在内部映射到其GObject
对应项(或至少,它的工作方式就像它们一样),即object
映射到和GObject.TYPE_PYOBJECT
。因此,我发现以下版本更直接:None
GObject.TYPE_NONE
from gi.repository import GObject
__gsignals__ = {'cell-edited': (GObject.SignalFlags.RUN_LAST,
None, (object, object, object, object, object)),
'selection-changed': (GObject.SignalFlags.RUN_LAST, None, (object,))}