minofoto and miscellaneous notes

ごく気まぐれに,書きたいことを適当に書いています。本当の話かもしれませんし,フィクションかもしれません。

Ruby で GUI プログラム

macOS に homebrew で新しい ruby を入れます。

brew install ruby
'export PATH="/opt/homebrew/opt/ruby/bin:$PATH"' >> ~/.zshrc

gem で Ruby/Tk をインストール。gem install tk はそのままでは通らないので、ライブラリを指定しないといけませんでした。homebrew のライブラリを探して指定しました。

gem install tk -- tcltkversion=8.6 --with-tcl-lib=/opt/homebrew/opt/tcl-tk/lib/ --with-tk-lib=/opt/homebrew/opt/tcl-tk/lib 
Building native extensions with: 'tcltkversion=8.6 --with-tcl-lib=/opt/homebrew/opt/tcl-tk/lib/ --with-tk-lib=/opt/homebrew/opt/tcl-tk/lib'

これで無事インストールできました。テストプログラムを書いてみます。

#!ruby
# require でライブラリを読み込み
require 'tk'
# ボタンを新規作成 引数は "属性: 値" で指定。ボタンを押したときの挙動は command: proc {} で指定できる。
button1 = TkButton.new(text: 'Hello Ruby/Tk', font: ['',24], command: proc { exit })
# ボタンを配置。とりあえず pack  でお任せ配置
button1.pack
# mainloop を回すと、ループが無限に回る
Tk.mainloop

ちゃんと動きました。