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

Back to archive index

ruby-gnome2-hiki-pt_BR****@sourc***** ruby-gnome2-hiki-pt_BR****@sourc*****
2004年 4月 9日 (金) 21:21:04 JST


-------------------------
REMOTE_ADDR = 200.216.146.35
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")}}

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