Frank, Your application is sending events to Gtk, but not allowing it to act on them. You need to return control to Gtk so that it can do something about the events. A simple fix to your code is ... >---8<--- >#!/usr/bin/ruby > [snip] >button1.signal_connect('clicked') { > 0.upto(50) do |i| > window.set_uposition(i, i) > print "Moving World\n" ... insert "while Gtk.events_pending do Gtk.main_iteration end" here. I find that this works as you hoped. > sleep(0.1) > end >} Although IMHO a better way would be to schedule a timeout. See Gtk.timeout_add. I feel that is nicer because then your application does not have to explicitly return control to Gtk and sleep: the Gtk timeout mechanism does that for you. HTH, Jeremy Henty