terça-feira, 21 de abril de 2015

2.2. Teoria de Sinais e Callbacks

 

Nota

Na versão 2.0 do GTK +, o sistema de sinal foi transferido do GTK para GLib. Não vamos entrar em detalhes sobre as extensões GLib 2.0 tem em relação ao sistema de sinal de GTK 1.2. As diferenças não deve ser visto no uso de PyGTK.
Antes de entrar em detalhes helloworld.py , discutir os sinais e callbacks. GTK + é uma biblioteca orientada a eventos, o que significa que vai dormir na função gtk.main () até que ocorre um evento e controle é passado para a função apropriada.
Esta delegação de controle é feito usando a idéia de "sinais". (Note-se que estes sinais não são os mesmos que os sinais do sistema Unix, e não são implementadas utilizando-os, embora a terminologia é quase idêntica) Quando ocorre um acontecimento, tal como quando se pressiona um botão do rato, o sinal apropriado é "emitida "pelo widget que foi pressionado. Isto é como GTK + faz a maior parte do seu trabalho útil. Há sinais de que todos os widgets herdam, como "destruir", e há sinais de que são específicos para cada controle, como "alternado" no caso de um botão de alternância.
Para fazer um botão de executar uma ação, montamos um manipulador de sinal para pegar esses sinais e chamar a função apropriada. Isso é feito usando um método de gtk.Widget (herdado da classe GObject ), incluindo:
   handler_id = object.connect ( name , func , func_data )
onde object é uma instância de gtk.Widget (controle), que será emitindo o sinal, e o primeiro argumento name é uma string contendo o nome do sinal a ser capturado. O segundo argumento, func é a função a ser chamada quando o evento ocorrer. O terceiro argumento, func_data são os dados a serem passados ​​para a função func . O método retorna uma handler_id que pode ser utilizado para desligar ou bloquear o uso do manipulador.
A função especificada no terceiro argumento é chamado de "função de retorno", e geralmente tem a forma:
   def callback_func ( widget , callback_data ):
onde o primeiro argumento é uma referência para o widget (controle) que emitiu o sinal, eo segundo ( callback_data ) uma referência aos dados apresentados como o último argumento no método de connect () mostrado acima.
Se a função de retorno é um método de um objeto, em seguida, ter a seguinte forma geral:
   callback_meth def ( self , widget , callback_data ):
onde self é a instância do objeto invocando o método. Esta é a forma utilizada no programa de amostra helloworld.py .

Nota

A velha maneira de declarar uma função de retorno do sinal é apenas um guia geral, uma vez que os sinais específicos dos diferentes controles geram diferentes parâmetros de chamada.
Outra chamada usado no Exemplo helloworld.py é:
   handler_id = object.connect_object ( name , func , slot_object )
connect_object () é idêntico ao connect () exceto a função de retorno utiliza apenas um argumento, e um método de retorno de chamada, dois argumentos:
   callback_func def ( object )
   callback_meth def ( self , object )
onde object é geralmente um widget. connect_object () permite que você use os métodos de PyGTK controla apenas um único argumento ( self ) como manipuladores de sinal.

Nenhum comentário:

Postar um comentário