terça-feira, 21 de abril de 2015

Capítulo 2. Primeiros Passos

 

Para começar a nossa introdução a PyGTK, vamos começar com o mais simples programa possível. Este programa ( base.py ) vai criar uma janela de pixel 200x200 e você não pode abandoná-lo senão terminar o processo a partir do console.
     1 #! / Usr / bin / env python
     2
     3 # exemplo base.py
     4
     Pygtk 5 de importação
     6 pygtk.require ('2.0')
     Gtk 7 de importação
     8
     9 Classes de Base:
    10 def __init __ (self):
    11 self.window = gtk.Window (gtk.WINDOW_TOPLEVEL)
    12 self.window.show ()
    13
    14 def main (self):
    15 gtk.main ()
    16
    17 impressão __name__
    18 se __name__ == "__main__":
    19 base = Base ()
    20 base.main ()
Você pode executar o programa acima, digitando na linha de comando:
   python base.py
Se base.py é feito executável e pode ser encontrado na variável PATH , você pode executá-lo usando:
  base.py 
Neste caso, a Linha 1 será o interpretador Python rodando base.py . Linhas 5-6 ajudar a diferenciar entre as várias versões do PyGTK que podem ser instalados no computador. Essas linhas indicam que pretende utilizar PyGTK versão 2.0, que abrange todas as versões do PyGTK com 2 número principal. Isso impede que o programa de usar versões anteriores do PyGTK, se estiverem instalados no sistema. Linhas 18-20 verificar se a variável __name__ é "__main__" , indicando que o programa está sendo executado diretamente de python e não está sendo importado para um interpretador Python. No primeiro caso, o programa cria uma nova instância da classe Base e salva uma referência a ele na variável de base . Em seguida, ele chama a função main () para iniciar o ciclo de processamento de evento de GTK.
Uma janela semelhante à Figura 2.1, "Janela PyGTK Simple" deve aparecer na sua tela.
Figura 2.1. Janela PyGTK Simples
Janela PyGTK Simples


A primeira linha permite que o programa base.py ser chamado a partir de um programa de shell Linux ou Unix assumindo que python está no PATH . Esta linha aparece como a primeira linha em todos os programas de exemplo.
Linhas 5-7 importar o módulo PyGTK 2 e inicializa o ambiente GTK +. O módulo PyGTK define as interfaces para os python + GTK funções que serão utilizados no programa. Para os que estão familiarizados com o GTK + deve-se notar que a inicialização inclui a chamada função gtk_init (). Algumas coisas para nós, como o padrão visual, o mapa de cores, os manipuladores de sinal padrão também são configurados. E verifica os argumentos passados ​​para o programa a partir da linha de comando, à procura de qualquer um:
  • --gtk-module
  • --G Fatais-warnings
  • --gtk-debug
  • --gtk-no-debug
  • --gdk-debug
  • --gdk-no-debug
  • --display
  • --sync
  • --name
  • --class
Neste caso, excluí-los da lista de argumentos e deixar o incompatíveis não reconhece que o programa analisar ou ignorar. O conjunto anterior de argumentos são aqueles que aceitam padrão todos os programas GTK +.
Linhas 9-15 definir uma classe python chamado Base que define uma instância método de inicialização __init__ (). A função __init__ () cria uma janela de nível superior (linha 11) nível e dirige GTK + para exibi-lo (linha 12). O gtk.Window é criada na linha 11 com o argumento gtk.WINDOW_TOPLEVEL indicando que sob uma posição decorações das janelas e gerenciador de janelas desejado. Ao invés de criar uma janela de tamanho 0x0, uma janela sem filhos tem um padrão 200x200 modo que você pode manipular o tamanho.
Linhas 14-15 definem o método main () que chama a função PyGTK main (), que invoca o principal processamento de eventos GTK + laço para lidar com eventos de mouse e teclado, e eventos de janela.
Linhas 18-20 permitir que o programa para iniciar automaticamente se chamado diretamente ou passado como um argumento para o interpretador Python. Nestes casos, o nome do programa está na variável __name__ será a string "__main__" eo código em linhas 18-20 será executado. Se o programa é carregado em um interpretador Python em execução, linhas 18-20 não será executado.
A linha 19 cria uma instância da classe Base chamada base . Criar um gtk.Window e resultados da amostra.
A linha 20 chama o método main () da classe Base , que inicia o ciclo de processamento de evento de GTK +. Quando o controle chega a esse ponto, GTK + vai dormir à espera de eventos X (como teclas ou botões), alarmes e notificações de arquivos de entrada / saída. No exemplo, no entanto, os eventos são ignorados.

2.1. Olá Mundo em PyGTK

Agora vamos continuar com um programa com um widget (um botão). É a versão PyGTK do clássico programa Olá mundo ( helloworld.py ).
     1 #! / Usr / bin / env python
     2
     3 # exemplo helloworld.py
     4
     Pygtk 5 de importação
     6 pygtk.require ('2.0')
     Gtk 7 de importação
     8
     9 classe HelloWorld:
    10
    11 # Esta é uma função de retorno.  Os argumentos de dados são ignoradas
    # 12 neste exemplo.  Mais informações sobre as chamadas de retorno abaixo.
    13 def Olá (self, widget, data = None):
    14 print "Olá Mundo"
    15
    16 def delete_event (self, widget, evento, data = None):
    17 # Se FALSE é retornado na manager "delete_event" sinal,
    18 # GTK irá emitir o sinal de "destruir".  Voltando meios VERDADEIROS
    # 19 não destruir a janela desejada.
    20 # Isso serve para apresentar diálogos como "Tem certeza de que deseja sair? '
    21 # 
    22 print "evento de exclusão ocorreu"
    23
    24 # Se o interruptor FALSE TRUE para a janela principal não
    25 # destruir com "delete_event".
    26 Retorno gtk.FALSE
    27
    28 # Outra callback
    29 def destruir (self, widget, data = None):
    30 Gtk.main_quit ()
    31
    32 def __init __ (self):
    33 # uma nova janela é criada
    34 self.window = gtk.Window (gtk.WINDOW_TOPLEVEL)
    35
    36 # Quando enviada para uma janela sinal "delete_event" (isto é feito
    37 # pelo gerenciador de janelas, geralmente com "close" ou com o ícone
    38 # do título da janela), pedimos que você chamar a função delete_event ()
    39 # definido acima.  Os dados passados ​​para o callback são
    40 # NULL e é ignorado na função de retorno.
    41 self.window.connect (self.delete_event "delete_event")
    42
    43 # Nós conectamos o evento "destruir" a um manipulador de sinal.
    44 # Este evento ocorre quando chamamos gtk_widget_destroy () para a janela,
    45 # ou se voltarmos FALSE no "delete_event" callback.
    46 self.window.connect ("destruir" self.destroy)
    47
    48 # Define a largura da borda da janela.
    Self.window.set_border_width 49 (10)
    50
    51 # um novo botão chamado "Olá Mundo" Crea.
    52 self.button = gtk.Button ("Olá Mundo")
    53
    54 # Quando o botão recebe o sinal "clicado", o chamado
    Função # 55 Olá () para passar Nada como o argumento.  A função Olá ()
    # 56 encontra-se definido acima.
    57 self.button.connect ("clicado", self.hello, None)
    58
    59 # Isto irá causar a destruição da janela chamando
    60 # gtk_widget_destroy (janela) quando "clicado" ocorre.  Mais uma vez,
    61 # sinal poderia vir aqui ou gerenciador de janelas.
    62 self.button.connect_object ("clicado", gtk.Widget.destroy, self.window)
    63
    64 # Este embala o botão na janela (GTK + container).
    65 self.window.add (self.button)
    66
    # 67 O passo final é para mostrar o controle recém-criada.
    68 self.button.show ()
    69
    70 # e a janela
    71 self.window.show ()
    72
    73 def main (self):
    74 # Todos os aplicativos PyGTK deve ter um gtk.main ().  Aqui é deixado
    75 # de controlo e se espera que aconteça um evento (tal como um teclado ou rato evento).
    76 gtk.main ()
    77
    78 # Se o programa for executado diretamente ou passado como um argumento para o intérprete
    79 # para Python, em seguida, uma instância de HelloWorld é criada e exibida
    80 se __name__ == "__main__":
    81 Olá = HelloWorld ()
    82 hello.main ()
Figura 2.2, "Exemplo do Programa: Olá Mundo" mostra a janela criada por helloworld.py .
Figura 2.2. Programa exemplo: Olá Mundo
Programa exemplo: Olá Mundo

As variáveis ​​e funções definidas no módulo PyGTK são nomeadas da maneira gtk.* . Por exemplo, o programa helloworld.py utilizado:
   gtk.FALSE
   gtk.mainquit ()
   gtk.Window ()
   gtk.Button ()
o módulo PyGTK. Nas seções futuras prefixo módulo gtk não é especificado, mas ele vai ser assumida. Naturalmente, os programas de exemplo usar os prefixos de módulo.

Nenhum comentário:

Postar um comentário