ruby-gnome2-hiki-pt_BR****@sourc*****
ruby-gnome2-hiki-pt_BR****@sourc*****
2004年 4月 11日 (日) 12:44:52 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")}} 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.