web-dev-qa-db-fra.com

Porter "import gobject" pour utiliser GObject-Introspection. (PyGTK à PyGI et GTK 3)

J'ai essayé de porter une bibliothèque de PyGTK pour utiliser GI et GTK3. Le problème est que je ne trouve aucune ressource spécifique aux importations de gobject, mais uniquement pour GTK. J'espérais que si quelqu'un traduisait ce qui suit pour moi, je comprendrais comment le faire. Les informations sur GTK semblent assez bien documentées, mais je ne trouve rien à ce sujet.


__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,))}

Mon hypothèse était, étant donné que je ne pouvais trouver aucune documentation spécifique, qu'il s'agirait de changer le nom des constantes, mais je ne pourrais pas trouver de remplaçant.

5

Je pense que j'ai déchiffré le code après avoir répété tout ce que j'ai pu trouver dans la classe GObject =>

G_SIGNAL_RUN_FIRST se trouve dans l'énumération GSignalFlags, qui se traduit par GObject.SignalFlags.RUN_FIRST. Ceci est cohérent, donc G_SIGNAL_MATCH_ID trouvé dans l'énumération GSignalMatchType se traduit par GObject.SignalMatchType.ID.

Pas tout à fait évident, mais assez facile une fois que vous savez quoi rechercher.

4

Comme dans les commentaires précédents, la traduction que vous avez demandée serait la suivante:

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,))}

Toutefois, selon ma propre expérience, certains types python sont en quelque sorte mappés en interne sur leurs équivalents GObject (ou du moins, cela fonctionne comme s'ils l'étaient), c'est-à-dire object est mappé sur GObject.TYPE_PYOBJECT et None sur GObject.TYPE_NONE. Par conséquent, je trouve la version suivante plus simple:

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,))}
4
jcollado