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