Question

J'ai créé un objet python, mais je veux envoyer des signaux dessus. Je l'ai fait hériter de gobject.GObject, mais il ne semble pas y avoir de moyen de créer un nouveau signal sur mon objet.

Était-ce utile?

La solution

Vous pouvez également définir des signaux dans la définition de classe:

class MyGObjectClass(gobject.GObject):
    __gsignals__ = {
      "some-signal": (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (object, )),
    }

Le contenu du tuple est identique aux trois derniers arguments de gobject.signal_new .

Autres conseils

Voici comment:

import gobject

class MyGObjectClass(gobject.GObject):
    ...

gobject.signal_new("signal-name", MyGObjectClass, gobject.SIGNAL_RUN_FIRST,
    None, (str, int))

Où l'avant-dernier argument est le type de retour et le dernier argument est un tuple de types d'arguments.

Si vous utilisez le kiwi disponible, ici , vous pouvez simplement procéder:

from kiwi.utils import gsignal

class MyObject(gobject.GObject):
    gsignal('signal-name')
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top