Sinais em PyGTK e Google Code Search

Os valores manipulados na classe ValueWheel (que criei com Cairo e mencionei num post anterior) influenciam diretamente alguns valores derivados que deverão ser atualizados em tempo real. Então acabei de aprendendo algo sobre sinais em PyGTK. Bem, na verdade sinais com GObject, o sistema de objetos de GTK.

É bem simples:

1. Criar o sinal com gobject.signal_new, os parâmetros são: nome (qualquer um, eu chamei de ‘value-changed’), classe, forma de tratar o sinal, tipo de retorno, tipos dos parametros (nesse caso tipos de dados normais de python).

gobject.signal_new('value-changed', ValueWheel,

gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,))

2. Emitir o sinal quando algum valor mudar. Junto com o sinal eu mando o atributo values, para o destinatário do sinal receber o atributo modificado.

self.emit('value-changed', self.values)

3. Na aplicação que usa o widget conectar o sinal a um callback

instancia_de_wheel.connect('value-changed', funcao_callback)

A assinatura do callback é def funcao_callback(widget, data), onde data será self.values.
O código mais atual está em ValueWheel.py

Google Code Search

Existem muitos bons tutoriais sobre GObject e PyGTK, mas o que me ajudou mesmo a pôr a coisa pra funcionar foi o Google Code Search. Não tem nada melhor que ver como algo é feito num código “pra valer”. Para os sinais eu usei a busca: lang:python gobject.signal_new

Tutoriais

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s