GTK2, algunos ejemplos
Para programar ventanas GTK con Ruby primero se ha de tener instalado el complemento GTK2 siguiendo las instrucciones de su página: http://sourceforge.net/project/showfiles.php?group_id=53614
Intentaré dar explicación a algunos ejemplos, no a todos, de la página de GTK: http://ruby-gnome2.sourceforge.jp
Posteriormente comprender un poco este entorno que vamos a manejar.
- Primero, todo programa debe tener en la primera línea (o de las primeras) un require 'gtk2', que será quien llame a este complemento y debe terminar con GTK.main o GTK.main_quit dependiendo de si queremos que la ventana de terminal desaparezca al finalizar de usar las ventanas o continúe.
- Hay que definir la ventana(as) y botón o botones, cada elemento con el texto y decoraciones que se mostrarán, y la posición y tamaños de todo.
- Definimos la ventana
- Definimos los botones
3.- Terminamos el programa con estas dos ordenes:
Bien empecemos con ejemplos fáciles:
1.- Ejemplo de una ventana:
require 'gtk2'
# Creamos la ventana
window = Gtk::Window.new
# Especificamos el título de la misma
window.title = "Soy la ventana"
# Mostramos la ventana y todo lo que esté definido en ella
window.show_all
Gtk.main
|
2.- Ejemplo de poner algo de texto en la ventana:
require 'gtk2'
# Creamos la ventana
window = Gtk::Window.new
# Especificamos el título de la misma
window.title = "Soy la ventana"
#Definimos una tabla y una etiqueta
table = Gtk::Table.new(1,1,true)
label1 = Gtk::Label.new("Hola estoy dentro de la ventana, lo ocupo todo y cuanto más escriba más larga se hace la misma ....")
table.attach(label1,0,2,0,1)
# Mostramos la tabla
window.add(table)
# Mostramos la ventana y todo lo que esté definido en ella
window.show_all
Gtk.main
|
3.- Ejemplo de texto y cuadro para introducir texto:
require 'gtk2'
window = Gtk::Window.new
window.border_width = 10
window.set_size_request(220, -1)
window.title = "Tabla"
window.signal_connect('delete_event') { false }
window.signal_connect('destroy') { Gtk.main_quit }
# filas, columnas, homogeneous
table = Gtk::Table.new(2, 2, true)
label1 = Gtk::Label.new("Introduce la siguiente información:")
label2 = Gtk::Label.new("Nombre: ")
name = Gtk::Entry.new
options = Gtk::EXPAND|Gtk::FILL
# child, x1, x2, y1, y2, x-opt, y-opt, xpad, ypad
table.attach(label1, 0, 2, 0, 1, options, options, 0, 0)
table.attach(label2, 0, 1, 1, 2, options, options, 0, 0)
table.attach(name, 1, 2, 1, 2, options, options, 0, 0)
window.add(table)
window.show_all
Gtk.main
|
4.- Ejemplo de botones con texto:
require 'gtk2'
window = Gtk::Window.new
window.border_width = 10
window.title = "Botones"
window.signal_connect('delete_event') { false }
window.signal_connect('destroy') { Gtk.main_quit }
fixed = Gtk::Fixed.new
button1 = Gtk::Button.new("Pixel a pixel ...")
button2 = Gtk::Button.new("Púlsame lo que quieras")
button1.signal_connect('destroy') { Gtk.main_quit }
button2.signal_connect('destroy') { Gtk.main_quit }
# Estas son las coordenadas de los botones
fixed.put(button1, 0, 0)
fixed.put(button2, 20, 30)
window.add(fixed)
window.show_all
Gtk.main
|
5.- Ejemplo de cuadro de introducción de texto
require 'gtk2'
window = Gtk::Window.new
window.border_width = 10
window.title = "Fixed"
window.signal_connect('delete_event') { false }
window.signal_connect('destroy') { Gtk.main_quit }
fixed = Gtk::Fixed.new
field1 = Gtk::Entry.new
field2 = Gtk::Entry.new
field3 = Gtk::Entry.new
fixed.put(field1, 0, 0)
fixed.put(field2, 0, 30)
fixed.put(field3, 0,60)
window.add(fixed)
window.show_all
Gtk.main
|
Con TAB se pasa de cuadro a cuadro.
|
5,1.- Igual que el anterior pero con diferentes tamaños de letra
require 'gtk2'
window = Gtk::Window.new
window.border_width = 10
window.title = "Fixed"
window.signal_connect('delete_event') { false }
window.signal_connect('destroy') { Gtk.main_quit }
fixed = Gtk::Fixed.new
field1 = Gtk::Entry.new
field2 = Gtk::Entry.new
font_desc = Pango::FontDescription.new("Sans 30")
field1.modify_font(font_desc)
fixed.put(field1, 0, 0)
fixed.put(field2, 20, 60)
window.add(fixed)
window.show_all
Gtk.main
|