Este código está basado completamente en el ejemplo del reloj del tutorial de Ruby + GTK
Gnome Canvas Clock
El código se simplificó para mayor claridad.
require 'gtk2'
class Mi_app < Gtk::VBox
def draw_clock(resize=false)
time = Time.now
cad = sprintf("%02i:%02i:%02i\n",time.hour, time.min, time.sec)
@label.set_text(cad)
end
def initialize()
super()
signal_connect_after('show') {|w,e| start() }
signal_connect_after('hide') {|w,e| stop() }
@label = Gtk::Label.new()
add(@label)
@label.show
show()
end
def start
@tid= Gtk::timeout_add(1000) { draw_clock(); true }
end
def stop
Gtk::timeout_remove(@tid) if @tid
@tid = nil
end
end
if $0 == __FILE__
class Viewer < Gtk::Window
def initialize()
super()
set_title("Flor de reloS!") # como dice un personaje de mi pueblo :)
signal_connect("delete_event") { |i,a| Gtk::main_quit }
set_default_size(250, 50)
add(Mi_app.new)
end
end
Gtk.init()
view = Viewer.new
view.show
Gtk.main()
end