テクノロイド

コンピュータやゲーム他、色々日々思ったことをつづっていきます。

Ruby/Gtk2からRuby/Tkへ書き換え

2014-10-28 23:13:16 | Ruby, Rails,プログラミング
大昔Tcl/Tkはいぢったことあるんだけど、Ruby/Tkは初めてなんでボタンの配置とか色々な記述ができるのがかえってわかりづらかったけど、それさえクリアしたら簡単に移植できた。
まあ元々シンプルだったからだけど、GUI周り以外はそのままRubyだからいじらなくていいし、ビックリするくらい簡単だった。

まず require 'gtk2'を'tk'に。

次に部品のレイアウト
msg = Gtk::Label.new("テキスト")
lbtn = Gtk::Button.new("表示")
rbtn = Gtk::Button.new("終了")
btns = Gtk::HBox.new
btns.add(lbtn)
btns.add(rbtn)
vb = Gtk::VBox.new
vb.add(msg)
vb.add(btns)
window = Gtk::Window.new.add(vb).show_all

msg = TkLabel.new{text "テキスト"}.pack
fr=TkFrame.new.pack
lbtn = TkButton.new(fr){text "表示"}.pack('side' => 'left')
rbtn = TkButton.new(fr,:text=>"終了").pack(:side => :left)
に。(LボタンとRボタンの記述をわざと変えてみた)

Ruby1.9以降なら
rbtn = TkButton.new(fr,text:"終了").pack(side: 'left')
なのかな(未確認)

rbtn.signal_connect("clicked") { Gtk.main_quit }
lbtn.signal_connect("clicked") { msg.set_text("クリック!") }

rbtn.command { exit }
lbtn.command { msg.text("クリック!") }

締めのGtk.mainがTk.mainloopと、これだけ

部品のnewの記述のとこは試行錯誤して時間かけたけど、Gtk版と対比しやすい記述にできて良かった。
というか、Tcl/TkやってたからRuby/Gtkを選んだんだったような気がしてきた。Tcl(←ティクル)がクセありすぎて挫折したしな。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする