読者です 読者をやめる 読者になる 読者になる

Sinatraのあらかると

記録することで、環境構築で悩まない。

Tcl/Tkを使ってGUIアプリケーションをRubyで。

既にrbenvをインストールしていることを想定しておきます。

※rbenvの環境構築はしません。

brew tap homebrew/dupes

brew install tcl-tk

でhomebrewからTcl/Tkをインストールします。

しばらく、コーヒーブレイクでもしていると完了しているはず。

tk.rb(新規作成)

require 'tk'
require "date"

t = Time.new #今日の日付と時刻
a = t.strftime("%Y年%m月%d日 %H時%M分%S秒")

#ラベルを付与

TkLabel.new(nil,
        :text => "ここにメッセージを入力してください",
            :fg => "white",
            :bg => "black").pack
TkLabel.new(nil,
        :text => "#{a}").pack

entry = TkEntry.new.pack
message = TkLabel.new.pack

# ボタンを作成
b = TkButton.new(:text => "表示").pack
b.command proc {message.text("by Ruby!,#{entry.value}")}

c = TkButton.new(:text => "終了").pack
c.command proc {exit}

Tk.mainloop

ruby tk.rb

を実行することでGUIアプリが動作しているはず。

[検証]

実は、テキストエリアには日本語が入力できません。なぜか、原因がわからないし、対処の予定もないのですが、マジックコメントをつけなくてもRuby2.0~はデフォルトでUTF-8化されているはずなのでRubyではなくTk側にあるのかなぁと想います。日本語入力の対処ができたら、検索エンジンをTcl/TkとRubyで作れるかもしれません。Rubyの構文をGUIの構文に埋め込むだけなので、正規表現を使っても、他で評価してもいけるはず。例えば、ファイルを読む文を書いてテキストファイルなどを用意して、テキストエリアに検索文字列、そして検索ボタンで検索して結果をCUIのターミナルへ出力なんて夢の話では無いような…。可能性がある検証は面白いですね。うまくいったら、zinbeijettに追加するかな…。むしろ、zinbeijettのソースが使えないかなぁ。

[追記]

日本語をTcl/TkのGUIパーツであるテキストエリアにコピペしてもきちんと表示されるんだよなぁ。IMEに何かあるのかなぁ。

調べると、やはりMacOSRuby/Tkで日本語入力の仕方(TkEntryで日本語を入力する方法)を紹介しているサイトは見つけられません。たぶん、独自でIMEとTcl/Tkを結ぶものを書かないといけないところにみえますし、IMEを起動できるようにするのはまだまだ難しそうですね。

[更新]

ファイルの先頭#coding: sjisをつけてファイルをsjisで保存してTcl/Tkを動作してみるとテキストエリアに日本語の表示ができました。エンコーディングまわりに気をつければテキストエリアに日本語表示ができますね。

[参考サイト]

rakkyooの備忘録

あっとページ

とても参考になりました。ブログにある書籍手元にあってよかった。

[備考]

Copyright © 2007-2017 Takayuki Kamiyama. All Rights Reserved.