GTK+ でプログレスバーを簡単に使う(Ruby)
長い処理だと、プログレスバーがあると便利ですよね。GTK+ で簡単に表示できるライブラリを作ってみました。
使い方はこんな感じです。
Utils.progress_bar do |bar| for i in 0..20 bar.fraction = i / 20.0 bar.text = "#{i * 5}%" sleep(0.5) end end
Utils.progress_bar
のブロック内に処理を書きます。ブロック変数 bar のインスタンス・メソッド Gtk::ProgressBar#fraction=
あるいは Gtk::ProgressBar#set_fraction()
がプログレスバーの値を決めるもので、0.0〜1.0 の値を代入して下さい。ウィンドウは自動で消えないので、ウィンドウに付いている消去のマークをクリックして処理が完了します。なお、ウィンドウを強制消去してしまった場合はユーザーの処理も中断してしまうので、注意して下さい。
なお、Gtk::PorgressBar
のインスタンス・メソッドはすべて使うことができます(text=
なども)。
Ruby コード。
require 'gtk2' module Utils def progress_bar w = Gtk::Window.new w.signal_connect("destroy") {Gtk.main_quit} w.set_size_request(300, 50) w.border_width = 10 w.title = "Progress" bar = Gtk::ProgressBar.new w.add(bar) Thread.new(bar) do |bar| yield(bar) end w.show_all Gtk.main end module_function :progress_bar end
なお、これは 野良 Gem 'Utils' - Camera Obscura に入れてあります。