Como conectar eventos de cliques do botão GTK3 a retornos de chamada

0

Então, estou desenvolvendo meu primeiro aplicativo com o GTK3 e não sei como vincular meus botões aos seus respectivos defs. Alguém pode postar um tutorial, um exemplo ou alguns documentos?

Usando as próximas coisas para desenvolver meu aplicativo:

  • Ubuntu 12.04 LTS totalmente atualizado
  • Python 2.7.3
  • Obviamente, o GTK + 3
  • Glade 3.12.1

O aplicativo que estou desenvolvendo é Virtuam (candidato no Showdown do aplicativo!)

    
por espectalll 19.06.2012 / 20:26

1 resposta

6

Veja este exemplo de como conectar eventos a retornos de chamada em Gtk 3 e Python . Em resumo, você usa o método connect() para conectar um nome signal (que é emitido quando um evento como um clique de botão ocorre) para um callback , que é o função que irá lidar com o seu evento.

def __init__(self):
    # Other initialization code

    # We create a button
    self.button = Gtk.Button(label="Click Here")
    # We connect the 'clicked' signal to the callback
    self.button.connect("clicked", self.on_button_clicked)

def on_button_clicked(self, widget):
    # This function will be called whenever the user presses the button
    print "Hello World"

Você também pode assistir ao vídeo Workshop de introdução Gtk3 que faz parte da Showdown do Ubuntu App .

Se você estiver usando o Glade, precisará fazer para garantir que o retorno de chamada on_<name-of-your-button>_clicked() esteja definido no código como um método da sua janela.

Se você estiver usando Rapidamente , isso é tudo o que precisa se preocupar.

Caso contrário, você precisará conectar manualmente o sinal ao retorno de chamada. Você tem duas opções:

  • Faça isso no código com self.builder.get_object('name-of-your-button').connect() - assumindo que builder é o nome do seu Gtk.Builder() no qual você carregou sua interface do Glade.
  • Faça isso com o Glade observando as propriedades do seu botão, escolhendo a guia de sinais e, em seguida, escrevendo o nome do seu retorno de chamada no sinal de 'clicado'.
por David Planella 20.06.2012 / 09:55