2010年12月30日木曜日

Ruby/Tkで進数変換2

 前回「進数変換」で半月以上試行錯誤と書きましたが、その大部分の時間を費やしたのが実は今回のコードです。このコードのパターンを諦めて、違う方法で割と早くできたのが前のコードだったのです。不思議なもので、ひとつ事が片付くと何か頭の中がすっきりして、さんざん苦労していた今回のコードですが、再び取り組んでから3日ぐらいで思っていた通りになりました。
 ボタンひとつで、各進数の変換結果を表示します。

#!/usr/bin/env ruby

require 'tk'

root = TkRoot.new
root.title = "進数変換"
root.bg '#FFFFFF'

TkLabel.new {
nil
text "数字を入力してください。"
font TkFont.new(['times', 14, ['bold']])
bg '#EEEEFF'
relief 'ridge'
pack
}

f = TkFrame.new.pack

e = TkEntry.new( f,
:font=>"Times 14",
:width=>"16",
:bg=>'#FFFFBF'
).pack('side'=>'right')

e.focus

el = TkLabel.new(f, 'text'=>'10進数: ',:font=>"メイリオ 10",:bg=>'#FFFFFF').pack('side'=>'left')

l = TkLabel.new {
bg '#FFFFFF'
pack
}
TkButton.new(nil,
:font=>"メイリオ 10",
'text'=>'クリア',
:foreground=>"white",
:bg=>'#000000',
'command'=>proc{e.value=""}
).pack('side'=>'right')

SINSU = (e.value).to_i

myFont = TkFont.new("family" => 'メイリオ', # Helvetica
"size" => 12,
"weight" => 'normal')

TkButton.new(nil,
:font=>"メイリオ 10",
'text'=>'変換',
'bd'=>6,
:foreground=>"yellow",
:bg=>'#0000FF',
'command'=>proc{l.
text("2進数 = #{((e.value).to_i).to_s(2)}\n8進数 = #{((e.value).to_i).to_s(8)}\n16進数 = #{((e.value).to_i).to_s(16)}").font myFont
}).pack('side'=>'left')

Tk.mainloop

最後に、Ruby/Tkについて非常によく分かったのが次のサイトです。
 http://www.mnet.ne.jp/~tnomura/rubytk.html「やってみようRuby/Tk」
ありがとうございました。

0 件のコメント:

コメントを投稿