Aplicaciones de escritorio GUI con Ruby

Programas con interfaz gráfica con Ruby

Esta entrada quiero hablar de un tema muy concreto que la gente suele preguntarme ocasionalmente, y es si es posible realizar programas con interfaz gráfica con el lenguaje de programación Ruby, la respuesta es sí.

Para hacerlo debemos por supuesto conocer el lenguaje de programación Ruby (muy orientado a objetos) y además las librerías que nos permiten realizar aplicaciones de escritorio visuales, a continuación paso a nombrar las más conocidas:

 

  • Ruby GTK
  • Shoes
  • FxRuby
  • Zenity
  • VisualRuby
  • QtRuby
  • SharedDevelop

 

Tenemos librerías visuales donde elegir, pero nosotros nos vamos a decantar por mostrarte en esta entrada Ruby GTK(The GIMP Toolkit), como hemos comentado antes es un conjunto de librería GUI que podemos impletar en nuestros programas. El motivo de escoger Ruby GTK entre las demás es sobretodo por la documentación existente y como valor añadido el resultado final de nuestras aplicaciones. Si eres programador en Java y has utilizado librerías gráficas podrás comprobar que la estructura de composición es muy parecida a la hora de crear nuestras ventanas y elementos que la componen.

 

Instalación de GTK

 

La instalación es bien sencilla, simplemente tenemos que introducir en el terminal o CMD la gema que deseamos instalar en nuestro caso GTK2.

gem install gtk2

Simple y sencillo como cualquier otra gema del mundo Ruby.

 

Conceptos básicos

 

Vamos a realizar una pequeña aplicación paso a paso y explicando el significado de cada uno de las líneas de código que implementemos. En primer lugar abre tu editor preferido que vamos ‘al lío!’. En nuestra primera línea poco que comentar, simplemente incorporamos la librería GTK, y en la segunda línea llamamos a las funciones necesarias para hacer funcionar las herramientas gráficas con GTK.init.

require 'gtk2'
GTK.init

Llegados a este punto podemos generar nuestra primera ventana, en definitiva es donde iremos incorporando todo lo elementos necesarios para realizar nuestro programa. En primer lugar creamos una instancia de la ventana gráfica y a el objeto «ventana» vamos llamando métodos o atributos para asignarles los valores que deseamos, en el ejemplo le indicamos el nombre de la ventana creada, tamaño y la posición de esta. Podemos ver todos los atributos en la documentación de esta aquí

 

ventana = Gtk::Window.new
ventana.set_title "Mi primera ventana"
ventana.set_default_size 500, 500
ventana.set_window_position Gtk::Window::Position::CENTER
ventana.show
Gtk.main

 

La penúltima línea «ventana.show» es la más importante y la que a los novatos suele olvidarse de introducir, llevando a quebraderos de cabezas de no ver su preciosa ventana generada. Su función es muestrar la ventana por pantalla, si llamar a ella no veríamos el resultado del código.

En la última línea tenemos «gtk.main», llamando a la función principal y generando un bucle hasta que en el código se encuentre «gtk.main_quit» y salga de nuestro programa. En nuestro programa carecemos del código para salir de la aplicación.

Si ejecutamos nuestro primer programa, te mostrará una ventana en el centro de la pantalla, con el tamaño y título que le hemos asignado(como no hemos introducido el código para que el programa salga automáticamente, tendremos que realizarlo con la combinación de teclas Ctrl+C en nuestro terminal). Para los rubystas novatos diremos que para ejecutar un programa desde CMD o terminal tienes que realizarlo con el comando ruby <nombre_del_programa.rb>.

 

Venana GtK

 

Bueno ya tenemos completado lo más díficil que es comenzar con una herramienta nueva y que salga a la primera, espero que no tengáis muchos problemas para conseguir crear vuestra primera ventana.

 

Mi primer botón con GTK

 

Ahora que sería lo siguiente…. añadir elementos a una ventana tan vacía, y ese será nuestro primer botón.

 

boton = Gtk::Button.new "Mi primer boton"
ventana.add(boton)
boton.show

 

Creamos nuestro primer objeto del tipo botón y le pasamos como argumento el nombre de este en la primera lína del código, luego tenemos que añadirlo a la ventana que hemos generado en el anterior código, y como en el caso de la ventana tenemos que mostrarlo con el método show.

Realizar en gtk un botón

Como vemos en la imagen queda un botón un poco grande, además de cometer errores ortográficos, este segundo lo podemos corregir introduciendo en la primera línea el siguiente código.

 

#encoding: utf-8

 

Pero el segundo problema es más complejo de solucionar y hace falta conocer el sistema de paneles o grid de la librería visual y no son pocos, por ello os dejamos para aquellos que quieran continuar su aprendizaje de la librería el enlace para que puedan hacerlo http://zetcode.com/gui/rubygtk/.

Aunque hemos centrado la explicación en líneas simple una tras otras, es mejor enfocarlas con las propiedades de los lenguajes orientados a objetos, que sería utilizando clases, herencia y todo nuestro conocimiento en realizar planteamientos correctos. Paso a detallar un ejemplo simple de como estructurar nuestra aplicación con gtk en Ruby orientado a objetos.

 

require 'gtk2'

class RubyApp < Gtk::Window

def initialize
super                                                  #Llama al método inicializador de la clase padre

inicializar_ventana                                     #Método donde tenemos todo el código de nuestra aplicación
end

def inicializar_ventana

set_title "Mi primera ventana"                          #Nombre de la ventana
set_default_size 500, 500                               #Tamaño de la ventana
set_window_position Gtk::Window::Position::CENTER       #Posición de la ventana
boton = Gtk::Button.new "Mi primer botón"               #Crear botón

add(boton)                                              #Añadir botón a la ventana

show_all                                                #Mostrar todos los elementos generados
end
end

Gtk.init
window = RubyApp.new
Gtk.main

 

Eventos del botón

 

Además y por último vamos introducir un ejemplo sencillo para la llamada de eventos, como por ejemplo cuando un usuario realice la pulsación del botón «Mi primera ventana».

boton.signal_connect "clicked" do
Gtk.main_quit
end

Con el método «signal_connect» y el evento «clicked» entra en nuestro código cuando un usuario realiza la pulsación en el botón y pasa a ejecutar las líneas correspondientes dentro del bloque Ruby.

Como hemos comentado al comienzo de este post, no es la única librería que existe para aplicaciones de entorno gráfico en el lenguaje de programación de Ruby, pero considero que esta es una librería sólida, con buena documentación para aquellos que quieran aventurarse a realizar sus aplicaciones GUI con Ruby.

Ruby no es solo un completo ideal de los framework como Rails o Sinatra, es más que ello, solo tenéis que conocerlo.

Leave A Reply

Tu dirección de correo electrónico no será publicada.