terça-feira, 21 de abril de 2015

3.2. Um atualizado Olá Mundo

 

    1   #!/usr/bin/env python
    2
    3   # Ejemplo helloworld2.py
    4
    5   import pygtk
    6   pygtk.require('2.0')
    7   import gtk
    8
    9   class HelloWorld2:
   10
   11       # La retrollamada mejorada. Los datos que se pasan a esta función
   12       # se imprimen por la salida estándar.
   13       def callback(self, widget, data):
   14           print "Hello again - %s was pressed" % data
   15
   16       # otra retrollamada
   17       def delete_event(self, widget, event, data=None):
   18           gtk.main_quit()
   19           return gtk.FALSE
   20
   21       def __init__(self):
   22           # Creamos una ventana
   23           self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   24
   25           # Esta llamada establece el título de la
   26           # ventana como "Hello Buttons!"
   27           self.window.set_title("Hello Buttons!")
   28
   29           # Aquí establecemos un manejador para delete_event que
   30           # sale inmediatamente de GTK+.
   31           self.window.connect("delete_event", self.delete_event)
   32
   33           # Establece el grosor del borde de la ventana
   34           self.window.set_border_width(10)
   35
   36           # Creamos una caja en la que empaquetar los controles. Esto se describe detalladamente
   37           # en la sección de "empaquetado". La caja no es visible en realidad sino que simplemente
   38           # facilita la organización de los controles.
   39           self.box1 = gtk.HBox(gtk.FALSE, 0)
   40
   41           # Introducimos la caja en la ventana principal
   42           self.window.add(self.box1)
   43
   44           # Crea un nuevo botón con la etiqueta "Button 1".
   45           self.button1 = gtk.Button("Button 1")
   46
   47           # Ahora, cuando se pulsa el botón, llamamos al método "callback"
   48           # con un puntero a "button 1" como argumento
   49           self.button1.connect("clicked", self.callback, "button 1")
   50
   51           # En vez de usar add(), empaquetamos este botón en la caja visible
   52           # que ha sido introducida en la ventana.
   53           self.box1.pack_start(self.button1, gtk.TRUE, gtk.TRUE, 0)
   54
   55           # Hay que recordar siempre este paso, que indica a GTK+ que la preparación del
   56           # botón ha terminado y que ya es posible mostrarlo.
   57           self.button1.show()
   58
   59           # Seguimos los mismos pasos para crear el segundo botón
   60           self.button2 = gtk.Button("Button 2")
   61
   62           # Llamamos la misma retrollamada pero con un argumento diferente,
   63           # haciendo referencia a "button 2" esta vez.
   64           self.button2.connect("clicked", self.callback, "button 2")
   65
   66           self.box1.pack_start(self.button2, gtk.TRUE, gtk.TRUE, 0)
   67
   68           # El orden en que mostramos los botones no es muy importante, pero es recomendable
   69           # mostrar la ventana en último lugar, puesto que así aparece todo de una vez.
   70           self.button2.show()
   71           self.box1.show()
   72           self.window.show()
   73
   74   def main():
   75       gtk.main()
   76
   77   if __name__ == "__main__":
   78       hello = HelloWorld2()
   79       main()
Correndo helloworld2.py janela é gerada Figura 3.1, "Exemplo atualizado Olá Mundo" .
Figura 3.1. Exemplo atualizado Olá Mundo
Exemplo atualizado Olá Mundo


Desta vez, você pode ver que não há nenhuma maneira fácil de sair do programa, e é necessário usar a linha de gerenciador de janelas ou de comando para excluí-lo. Um bom exercício para o leitor seria inserir um terceiro botão "Sair" para fechar o programa. Seria interessante jogar com opções pack_start () ao ler a secção seguinte e tentar redimensionar a janela e ver o que acontece.
Como uma nota, devemos mencionar outra constante útil para gtk.Window () - WINDOW_DIALOG . Este tipo de janela interage de forma diferente com o gerenciador de janelas e deve ser usado em janelas uso temporário.
Seguem-se pequenas diferenças no código de sequência em relação à versão inicial do programa "Olá Mundo":
Como já foi mencionado, não há manipulador de eventos "destruir" nesta versão melhorada "Olá Mundo".
Linhas 13-14 definir um método de retorno semelhante ao callback hello () o exemplo inicial. A diferença é que o retorno de chamada imprime uma mensagem, incluindo dados a serem fornecidos.
Linha 27 conjuntos de um título para a barra de título da janela (ver Figura 3.1, "Exemplo atualizado Olá Mundo" ).
Linha 39 cria uma caixa horizontal ( gtk.HBox ) armazenar os dois botões criados nas linhas 45 e 60. Linha 42 acrescenta a caixa horizontal para o recipiente janela.
As linhas 49 e 64 conectar o método callback () para o "clicado" botões de sinal. Cada botão define uma string diferente passado para o método callback () para ser chamado.
Linhas 53 e 66 embalar os botões na caixa horizontal. E, finalmente, as linhas 57 e 70 perguntar GTK para exibir os botões.
Linhas 71-72 pedir GTK para exibir a caixa ea janela.

Nenhum comentário:

Postar um comentário