移植“import gobject”以使用 GObject-Introspection。(PyGTK 到 PyGI 和 GTK 3)

移植“import gobject”以使用 GObject-Introspection。(PyGTK 到 PyGI 和 GTK 3)

我一直在尝试从 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。因此,我发现以下版本更直接:NoneGObject.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,))}

相关内容