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.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. 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 (ondeobject
) callback_meth def (self
,object
)
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