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

Back to archive index

ruby-****@sourc***** ruby-****@sourc*****
2005年 3月 18日 (金) 02:23:01 JST


-------------------------
REMOTE_ADDR = 213.37.10.235
REMOTE_HOST = 
REMOTE_USER = ruby-gnome2-hiki        URL = http://ruby-gnome2.sourceforge.jp/cgi-bin/hiki/es/hiki.cgi?tut-gtk-holamundo2
-------------------------
TITLE       = tut-gtk-holamundo2
KEYWORD     = 
= Un Hola Mundo Actualizado
{{link "tut-gtk-senales-mas", nil, "tut-gtk", "tut-gtk-empaquetado-intro"}}

{{image_right("helloworld2.png")}}

Echemos un vistazo a una versi$B(B mejorada de holamundo, con mejores ejemplos de bloques de respuesta. Tambi$BqO(B introduciremos el siguiente tema: empaquetado de componentes.

  #!/usr/bin/env ruby

  # Inicializa Ruby/GTK2, como siempre.
  require 'gtk2'
  Gtk.init

  # Pulsar un bot$B(B llamara este m$BqU(Bodo.
  def callback(widget)
    # Muestra la propiedad 'label' del componente.
    # Puedes ver el API para m$BaT(B informaci$B(B.
    puts "Hola de nuevo - #{widget.label}(#{widget}) fue pulsado."
  end

  # Crea la ventana.
  window = Gtk::Window.new

  # Especifica el t$ByU(Bulo y el borde de la ventana.
  window.title = "Botones Hola"
  window.border_width = 10

  # El programa terminardirectamente con el evento 'delete_event'.
  window.signal_connect('delete_event') do
    Gtk.main_quit
    false
  end

  # Creamos una caja para almacenar los componentes dentro.  
  # Este proceso se describe detalladamente en la siguiente secci$B(B.
  # La caja en realidad no es visible, tan solo es usada para ordenar los componentes. 
  box1 = Gtk::HBox.new(false, 0)

  # Vamos a colocar la caja en la ventana principal.
  window.add(box1)

  # Crea un nuevo bot$B(B con la etiqueta "Boton 1".
  button1 = Gtk::Button.new("Boton 1")

  # Ahora cuando pulsemos el bot$B(B, llamaremos al m$BqU(Bodo de respuesta
  # con una referencia a "bot$B(B 1" como argumento.
  button1.signal_connect( "clicked" ) do |w|
    callback(w)
  end

  # En lugar de usar window.add, vamos a empaquetar este bot$B(B en la caja
  # invisible, que a su vez estempaquetada dentro de la ventana.
  box1.pack_start(button1, true, true, 0)

  # Sigamos los mismos pasos para crear un segundo bot$B(B.
  button2 = Gtk::Button.new("Button 2")

  # Llama al mismo m$BqU(Bodo de respuesta con diferente argumento,
  # pasando en su lugar una referencia a "bot$B(B 2".
  button2.signal_connect("clicked") do |w|
    callback(w)
  end

  # De la misma forma empaquetamos el segundo bot$B(B en la caja.
  box1.pack_start(button2, true, true, 0)

  # Se puede llamar al m$BqU(Bodo 'show' de cada componente as
  #   button1.show
  #   button2.show
  #   box1.show
  #   window.show 
  window.show_all
  Gtk.main
  
Hay que tener en cuanta, que al igual que en el primer Hola Mundo, no existe una forma sencilla de salir del programa. Hay que usar el gestor de ventanas o la consola para cerrarlo.

Un buen ejercicio para el lector ser$ByB(B insertar un tercer bot$B(B 'Salir' que cerrara el programa.

Tambi$BqO(B es posible que quiera jugar con las opciones de Gtk::Box#pack_start mientras lee la siguiente secci$B(B. Pruebe a redimensionar la ventana y observe su comportamiento.






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