[ruby-gnome2-doc-cvs] [Hiki] update - tut-gtk-helloworld2

Back to archive index

ruby-gnome2-hiki-pt_BR****@sourc***** ruby-gnome2-hiki-pt_BR****@sourc*****
2004年 4月 11日 (日) 13:08:54 JST


-------------------------
REMOTE_ADDR = 200.216.145.78
REMOTE_HOST = 
        URL = http://ruby-gnome2.sourceforge.jp/pt_BR/?tut-gtk-helloworld2
-------------------------
  = Um OlMundo Melhorado
  {{link "tut-gtk-signals-more", nil, "tut-gtk", "tut-gtk2-packing-intro"}}
  
- {{image_right("helloworld2.png")}}
+ {{image_right("en:helloworld2.png")}}
  
  Vamos dar uma olhada em um ol$BaN(Bundo um pouco melhorado com melhores exemplos de blocos de "callbacks". 
  Isto tamb$BqN(B nos introduzirpara o nosso pr$B(Bimo t$B(Bico, posicionando componentes.
  
    #!/usr/bin/env ruby
  
    # Inicializa a Ruby/GTK2, como sempre.
    require 'gtk2'
    Gtk.init
  
    # Uma press$BeP(B em um bot$BeP(B chamareste m$BqU(Bodo.
    def callback(widget)
      # Mostra a propriedade 'label' do componente.
      # Veja a documenta$Bne(Bo de refer$BsO(Bcia para mais informa$Bnw(Bes.
      puts "Olnovamente - #{widget.label}(#{widget}) foi pressionado."
    end
  
    # Cria a janela.
    window = Gtk::Window.new
  
    # Especifica o t$ByU(Bulo e a borda da janela.
    window.title = "Bot$B(Bs Ol
    window.border_width = 10
  
    # O programa terminardiretamente no 'delete_event'.
    window.signal_connect('delete_event') do
      Gtk.main_quit
      false
    end
  
    # A gente cria uma caixa para posicionar os componentes dentro.  
    # Isto descrito em detalhes na se$Bne(Bo seguinte.
    # A caixa n$BeP(B realmente vis$ByW(Bel, ela usada apenas como uma 
    #  ferramenta para organizar os componentes.
    box1 = Gtk::HBox.new(false, 0)
  
    # Coloca a caixa dentro da janela principal.
    window.add(box1)
  
    # Cria um novo bot$BeP(B com o r$B(Bulo "Bot$BeP(B 1".
    button1 = Gtk::Button.new("Bot$BeP(B 1")
  
    # Agora quando o bot$BeP(B clicado, a gente chama o m$BqU(Bodo de "callback"
    # com uma refer$BsO(Bcia para "bot$BeP(B 1" como seu argumento.
    button1.signal_connect( "clicked" ) do |w|
      callback(w)
    end
  
    # Em vez de window.add, a gente posiciona este bot$BeP(B dentro da caixa invis$ByW(Bel,
    # a qual foi posicionada dentro da janela.
    box1.pack_start(button1, true, true, 0)
  
    # Fa$BmB(B esses mesmos passos de novo para criar um segundo bot$BeP(B.
    button2 = Gtk::Button.new("Bot$BeP(B 2")
  
    # Chama a mesma fun$Bne(Bo de "callback" com um argumento diferente,
    # passando uma refer$BsO(Bcia para "bot$BeP(B 2" desta vez.
    button2.signal_connect("clicked") do |w|
      callback(w)
    end
  
    # Posiciona o segundo bot$BeP(B em uma caixa tamb$BqN(B.
    box1.pack_start(button2, true, true, 0)
  
    # Vocpode chamar o m$BqU(Bodo "show" de cada componente, como a seguir:
    #   button1.show
    #   button2.show
    #   box1.show
    #   window.show 
    window.show_all
    Gtk.main
    
  Como o primeiro OlMundo, vocperceberque desta vez n$BeP(B existe uma maneira f$BaD(Bil de sair do programa, assim voctem que usar o seu gerenciador de janela ou linha de comando para matlo ("kill it") .  
  
  Um bom exerc$ByD(Bio para o leitor seria inserir um terceiro bot$BeP(B "Sair" que sairdo programa.  
  
  Vocpode tamb$BqN(B querer brincar com as op$Bnw(Bes para Gtk::Box#pack_start enquanto le a nossa pr$B(Bima se$Bne(Bo. Tente redimensionar a janela e observe o comportamento.





ruby-gnome2-cvs メーリングリストの案内
Back to archive index