Портирование & ldquo; импорт gobject & rdquo; использовать 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,))}

Мое предположение было, так как я не мог найти какую-либо конкретную документацию, что это будет вопрос изменения названия констант, но я не могу найти никаких замен.

5
задан 24 October 2011 в 17:55

2 ответа

Думаю, что я взломал код после dir () - все, что я мог найти в классе GObject =>

G_SIGNAL_RUN_FIRST находится в перечислении GSignalFlags, что переводится как GObject.SignalFlags.RUN_FIRST , Это согласуется, поэтому G_SIGNAL_MATCH_ID, найденное в enum GSignalMatchType, переводится как GObject.SignalMatchType.ID.

Не совсем очевидно, но достаточно просто, если вы знаете, что искать.

0
ответ дан 24 October 2011 в 17:55

Как и в предыдущих комментариях, перевод, который вы просили, был бы следующим:

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,))}
0
ответ дан 24 October 2011 в 17:55

Другие вопросы по тегам:

Похожие вопросы: