はじめまして。
Ruby/GtkでのProgressBarについて質問があります。
下のソースを実行した場合、プログレスバーの途中が表示されません。18行目の
updateをThread.start { update }に変更すれば途中も表示されるようになるので
すが、それだとプログレスバーを表示しながら実行する部分はすべてスレッドに
しなければならず、いまいち使い勝手が良くありません。
おそらく、スレッドにしなかった場合、updateの処理の途中でGtkに制御が移らな
いため、内部の数値だけ変更されて表示が更新されないのだと思いますが、どう
対処して良いかわかりません。どうすれば良いでしょうか?

---ソース---
require "gtk"

def update
  (0..10).each { |i|
    r=Float(i)/10
    p r
    $progress.update(r)
    sleep(1)
  }
end

top=Gtk::Window.new(Gtk::WINDOW_TOPLEVEL)
top.signal_connect("destroy") { exit }
vbox=Gtk::VBox.new(true,0)
$progress=Gtk::ProgressBar.new
button=Gtk::Button.new("Start")
button.signal_connect("clicked") { |*args|
  update
}
vbox.pack_start($progress,true,true,0)
vbox.pack_start(button,true,true,0)
top.add(vbox)
top.show_all
Gtk.main
--
「臆病者には勝利の女神は微笑まない」
YASUI Kentarow <kenyasui / alles.or.jp>   http://www.alles.or.jp/~kenyasui/