Pergunta

Criei um objeto python, mas quero enviar sinais nele.Eu herdei de gobject.GObject, mas não parece haver nenhuma maneira de criar um novo sinal no meu objeto.

Foi útil?

Solução

Você também pode definir sinais dentro da definição da classe:

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

O conteúdo da tupla é igual aos três últimos argumentos para gobject.signal_new.

Outras dicas

Aqui está como:

import gobject

class MyGObjectClass(gobject.GObject):
    ...

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

Onde o penúltimo argumento é o tipo de retorno e o último argumento é uma tupla de tipos de argumentos.

Se você usar kiwi disponível aqui você pode simplesmente fazer:

from kiwi.utils import gsignal

class MyObject(gobject.GObject):
    gsignal('signal-name')
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top