Ruby

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'
}

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-05-12 (木) 08:55:09