Tcl/Tkなんて懐かしすぎるものだけど、こうやってちゃんと生きているのね。 Rubyとの組み合わせで「とりあえずGUIしたい」時にいろんな環境で動く のがいいわよね。
まずは、HelloWorldね。
あ、試した環境は最新の Ruby2.3.0(p0)、Ubuntu GNOME16.04LTS(amd64)よ。
#ref(): File not found: "1.png" at page "Ruby/tkしてみよう"
#!/usr/bin/ruby -EUTF-8 require 'tk' TkLabel.new{ text "こんにちは世界" pack } Tk.mainloop
ふむふむ。
でも、このままじゃあ用途がほとんどないわよね。
うん、何かボタンを押して動作反映させてみましょう。
#!/usr/bin/ruby -EUTF-8 require 'tk' ff = TkLabel.new{ text "a" pack } TkButton.new{ text "こんにちは" command { print "Hello, World!\n" ff.text = "だよ?" } pack } Tk.mainloop
#ref(): File not found: "2.png" at page "Ruby/tkしてみよう"
で、押したらこうなる。
#ref(): File not found: "3.png" at page "Ruby/tkしてみよう"
ここまでくると、なんとなく理解できたわね。つまり、
わけね。
あとは、時間割り込みできれば最低限の用途に使えるわよね。やってみましょう。
#!/usr/bin/ruby -EUTF-8 require 'tk' def tNow Time.now.strftime("%Y-%m-%d %H:%M:%S") end ff = TkLabel.new{ text = tNow pack } TkButton.new{ text "こんにちは" command { print "Hello, World!\n" ff.text = tNow } pack } TkTimer.start(100){ ff.text = tNow } Tk.mainloop
#ref(): File not found: "4.png" at page "Ruby/tkしてみよう"
待ち時間はミリ秒単位ってことかしら?
あとはボタンの配置とか、細かい制御かしら。
これも大切よね。
でも、まさか geometry で設定するなんて。本当に tkなのねえ。
TkRoot.new{ title '時計' geometry '320x200' }