Портирование "import gobject" для использования GObject-Introspection. (PyGTK для PyGI и GTK 3)
Я пытался портировать библиотеку из PyGTK для использования GI и GTK3. Проблема в том, что я не могу найти ресурсы, специфичные для импорта объектов, но только для 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,))}
Мое предположение состояло в том, что, поскольку я не мог найти какую-либо конкретную документацию, что это было бы вопросом изменения названия констант, но я не могу найти никаких замен.
2 ответа
Думаю, я взломал код после dir()- все, что я мог найти в классе GObject =>
G_SIGNAL_RUN_FIRST
находится в GSignalFlags
enum, что переводится как GObject.SignalFlags.RUN_FIRST
, Это соответствует, поэтому G_SIGNAL_MATCH_ID
найдено в перечислении GSignalMatchType
переводит на GObject.SignalMatchType.ID
,
Не совсем очевидно, но достаточно просто, если вы знаете, что искать.
Как и в предыдущих комментариях, ваш перевод будет следующим:
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,))}