Como faço para criar um novo sinal em pygtk
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.
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