Domanda

Ho creato un oggetto Python, ma voglio inviargli segnali.L'ho fatto ereditare da gobject.GObject, ma non sembra esserci alcun modo per creare un nuovo segnale sul mio oggetto.

È stato utile?

Soluzione

Puoi anche definire segnali all'interno della definizione della classe:

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

Il contenuto della tupla è lo stesso degli ultimi tre argomenti gobject.signal_new.

Altri suggerimenti

Ecco come:

import gobject

class MyGObjectClass(gobject.GObject):
    ...

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

Dove il penultimo argomento è il tipo restituito e l'ultimo argomento è una tupla di tipi di argomento.

Se usi il kiwi a disposizione Qui puoi semplicemente fare:

from kiwi.utils import gsignal

class MyObject(gobject.GObject):
    gsignal('signal-name')
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top