Crear  Editar  FrontPage  Indexes  Buscar  Cambios  History  RSS  Login

tut-gtk-holamundo2

Hola Mundo Actualizado

helloworld2.png

Echemos un vistazo a una versión mejorada de holamundo, con mejores ejemplos de bloques de respuesta. También introduciremos el siguiente tema: empaquetado de componentes.

#!/usr/bin/env ruby

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

# Pulsar un botón llamará a este método.
def callback(widget)
  # Muestra la propiedad 'label' del componente.
  # Puedes ver el API para más información.
  puts "Hola de nuevo - #{widget.label}(#{widget}) fue pulsado."
end

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

# Especifica el título y el borde de la ventana.
window.title = "Botones Hola"
window.border_width = 10

# El programa terminará directamente 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ón.
# 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ón con la etiqueta "Boton 1".
button1 = Gtk::Button.new("Boton 1")

# Ahora cuando pulsemos el botón, llamaremos al método de respuesta
# con una referencia a "botón 1" como argumento.
button1.signal_connect( "clicked" ) do |w|
  callback(w)
end

# En lugar de usar window.add, vamos a empaquetar este botón en la caja
# invisible, que a su vez está empaquetada dentro de la ventana.
box1.pack_start(button1, true, true, 0)

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

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

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

# Se puede llamar al método '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ía insertar un tercer botón 'Salir' que cerrara el programa.

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

Ultimas actualizaciones:2011/06/06 05:17:45
Clave:
Referencias:[tut-gtk]