RubyLit - Ruby.del.litoral!
uso de botones biestados

Los botones biestados son los toggle buttons

require "rubygems" 
require "wx" 
include Wx
class Ejemplo < App  
def on_init  
 frameEjemplo = Frame.new(nil, -1, "Ejemplo")

 bitmap1 = Bitmap.new("rojo.png", BITMAP_TYPE_PNG)
 bitmap2 = Bitmap.new("amarillo.png", BITMAP_TYPE_PNG)

 tb1 = ToggleButton.new(frameEjemplo, 1, "uno",   [20, 20], [40,40])
 tb2 = ToggleButton.new(frameEjemplo, 2, "dos",   [20, 70], [40,40])
 tb3 = ToggleButton.new(frameEjemplo, 3, "tres",  [70, 20], [40,40])
 tb4 = ToggleButton.new(frameEjemplo, 4, "reset", [70, 70], [50,40])

 # seteo como pulsado al boton dos
 tb2.set_value(true)

 evt_togglebutton(tb1) { | event | estado_del_boton(tb1.get_value)}
 evt_togglebutton(tb2) { | event | estado_del_boton(tb2.get_value)}
 evt_togglebutton(tb3) { | event | estado_del_boton(tb3.get_value)} 
 evt_togglebutton(tb4) { | event | 
     puts "reseteando los botones, set value _NO_ genera un evento 'evt_togglebutton'." 
     tb1.set_value(false)
     tb2.set_value(false)
     tb3.set_value(false)
     tb4.set_value(false)
 } 

 frameEjemplo.show()
end

def estado_del_boton(bandera)
    if bandera
        puts "está pulsado" 
    else
        puts "está levantado" 
    end
end
end
Ejemplo.new.main_loop


Las imágenes usadas en el ejemplo se pueden generar con un programa similar al siguiente:
require 'RMagick'
include Magick

f = Image.new(50,28) { self.background_color = "yellow" }

f.write("amarillo.png")