Showing changes from revision #0 to #1:
Added | Removed
Probablemente los botones sean los widget mas usados en las aplicaciones Ruby GTK, y por suerte hay mucha documentación sobre como usarlos.
voy a poner algunos ejemplos y a hacer incapie en una señal que me costó trabajo encontrar debido a que abundan los malos usos.
primero hay que destacar que se disponen de dos formas de llamar al metodo new
Gtk::Button.new(text, use_underline = true)
En el siguiente ejemplo se muestra como activar el botón tocando las teclas ALT + l
Gtk::Button.new("C_lic", true)
La siguiente forma de llamar a new es especificando una imagen stock
Gtk::Button.new(stock_id)
donde stock_id es una de las constantes que se pueden usar, la lista se puede consultar en esta dirección
http://ruby-gnome2.sourceforge.jp/hiki.cgi?Gtk%3A%3AStock#Constants
Un ejemplo es:
Gtk::Button.new(Gtk::Stock::ABOUT)
Pero la potencia de los botones está en el codigo que se ejecuta cuando el usuario lo activa.
esto se logra de la siguiente forma:
bt1 = Gtk::Button.new("_Clic", true) bt1.signal_connect( "clicked" ) do print "clic en el boton 1\n" end
El siguiente es un ejemplo completo.
require 'gtk2' class Mi_app < Gtk::VBox def initialize() super() bt1 = Gtk::Button.new("_Clic", true) bt2 = Gtk::Button.new("No_rmal", false) bt3 = Gtk::Button.new(Gtk::Stock::OK) bt1.signal_connect( "clicked" ) do print "clic en el boton 1\n" end bt2.signal_connect( "clicked" ) do print "clic en el boton 2\n" end bt3.signal_connect( "clicked" ) do print "clic en el boton 3\n" end pack_start( bt1, false, false, 3) pack_start( bt2, false, false, 3) pack_start( bt3, false, false, 3) end end if $0 == __FILE__ class Viewer < Gtk::Window def initialize() super() set_title("Botones") set_window_position(Gtk::Window::POS_CENTER) signal_connect("delete_event") { |i,a| Gtk::main_quit } set_default_size(300, 150) add(Mi_app.new) end end Gtk.init() view = Viewer.new view.show_all Gtk.main() end
Los programadores muy curiosos pueden intentar reemplazar el código
bt1.signal_connect( "clicked" ) do
bt1.signal_connect( "button_press_event", Gdk::Event::BUTTON_PRESS ) do
Pese a que la ultima es la forma mas frecuente la misma no ejecuta el código cuando se presiona la combinación ALT + C