天野竜太郎と申します。 詳しくないのですが、わかる範囲で。 現在のMacOSX10.4以降では、最初からTcl/Tk8.4.7がイン ストールされており、デフォルトのRuby-1.8.2からX11を 立ち上げずにAqua状態でruby-tkが使えます (TclTkAquaをインストールしないで使えるという意味です)。 下記のような状況です。 $ ls -l /usr/lib/tk* lrwxr-xr-x 1 root wheel 69 11 14 17:11 /usr/lib/tkConfig.sh@ - > ../../System/Library/Frameworks/Tk.framework/Versions/8.4/tkConfig.sh -rwxr--r-- 1 root wheel 2350 3 21 2005 /usr/lib/tkimgConfig.sh* $ ls -l /usr/lib/libtk* lrwxr-xr-x 1 root wheel 14 11 14 17:10 /usr/lib/libtk.dylib@ -> libtk8.4.dylib lrwxr-xr-x 1 root wheel 60 11 14 17:10 /usr/lib/libtk8.4.dylib@ - > ../../System/Library/Frameworks/Tk.framework/Versions/8.4/Tk lrwxr-xr-x 1 root wheel 72 11 14 20:53 /usr/lib/libtkstub8.4.a@ - > ../../System/Library/Frameworks/Tk.framework/Versions/8.4/ libtkstub8.4.a $ ls -l /usr/include/tk* lrwxr-xr-x 1 root wheel 70 11 14 20:53 /usr/include/tk.h@ - > ../../System/Library/Frameworks/Tk.framework/Versions/8.4/Headers/ tk.h lrwxr-xr-x 1 root wheel 75 11 14 20:53 /usr/include/tkDecls.h@ - > ../../System/Library/Frameworks/Tk.framework/Versions/8.4/Headers/ tkDecls.h lrwxr-xr-x 1 root wheel 82 11 14 20:53 /usr/include/ tkIntXlibDecls.h@ -> ../../System/Library/Frameworks/Tk.framework/ Versions/8.4/Headers/tkIntXlibDecls.h lrwxr-xr-x 1 root wheel 76 11 14 20:53 /usr/include/tkMacOSX.h@ - > ../../System/Library/Frameworks/Tk.framework/Versions/8.4/Headers/ tkMacOSX.h lrwxr-xr-x 1 root wheel 79 11 14 20:53 /usr/include/ tkPlatDecls.h@ -> ../../System/Library/Frameworks/Tk.framework/ Versions/8.4/Headers/tkPlatDecls.h $ ls -l /usr/include/libtk* ls: /usr/include/libtk*: No such file or directory /System/Library/Frameworks 以下に Tcl.frameworkとTk.frameworkがあります。 また、新しいRubyをインストールする際でも普通にインストール してRuby-Tkが使えます。 僕のところではruby-1.8.3を以下の手順でインストールしました が、X11を使わずにRuby-Tkが使えています。 ./configure --enable-pthread --enable-shared make sudo make install --enabled-sharedはなくても同じかもしれません。 この状態で、Terminalを立ち上げ $ irb irb(main):001:0> require "tk" => true irb(main):002:0> Tk.mainloop として出てくるウィンドウから「About Tcl Tk...」を選択すると Tcl Tk 8.4.7 と出てきます。 ですから、最初からインストールされている8.4.7からバージョ ンアップしないのなら --enable-tcltk-framework --enable-macosx-aqua はいらないのだと思います。 次に緊急用に作ってある小さなパーティションに開発環境をインストー ルして試してみました。 環境 Mac OS 10.4.3 XCode2.2(gcc 4.01) メインのパーティションと同じです。 TclTkAquaBI-8.4.10 インストール readline-5.0 インストール ruby-1.8.4-preview2 patchをあてる。 ./configure --enable-pthread --enable-tcltk-framework --enable-macosx- aqua make sudo make install これで、irbからTk.mainloopして出てくるウィンドウでは、 Tcl Tk 8.4.10となります。 ruby-1.8.4/ext/tk/sample/demos-jp/widget を動かしてみましたが、動作がおかしいのは、 ラベル、ボタン、チェックボタン、ラジオボタンの 5.3状態チェックボタン 8.3状態ラジオボタン 上の二つは、RuntimeError: unknown option "-tristatevalue" となります 5.3状態チェックボタン ------------------------------------------------------------------------ ----------- RuntimeError: unknown option "-tristatevalue" ---< backtrace of Ruby side >----- /usr/local/lib/ruby/1.8/tk.rb:1674:in `_invoke_without_enc' /usr/local/lib/ruby/1.8/tk.rb:1674:in `_ip_invoke_core' /usr/local/lib/ruby/1.8/tk.rb:1710:in `_tk_call_core' /usr/local/lib/ruby/1.8/tk.rb:1738:in `tk_call_without_enc' /usr/local/lib/ruby/1.8/tk.rb:4029:in `create_self' /usr/local/lib/ruby/1.8/tk.rb:4012:in `initialize' widget:617:in `_null_binding' widget:556:in `_null_binding' widget:556:in `_null_binding' widget:568:in `invoke' widget:219 /usr/local/lib/ruby/1.8/tk/event.rb:419:in `install_bind_for_event_class' /usr/local/lib/ruby/1.8/tk.rb:1187:in `cb_eval' /usr/local/lib/ruby/1.8/tk.rb:1138:in `call' /usr/local/lib/ruby/1.8/tk.rb:1304:in `callback' /usr/local/lib/ruby/1.8/tk.rb:1303:in `callback' /usr/local/lib/ruby/1.8/tk.rb:1334:in `mainloop' /usr/local/lib/ruby/1.8/tk.rb:1537:in `mainloop' widget:888 ---< backtrace of Tk side >------- invoked from within "rb_out c00007 297 205" (command bound to event) ------------------------------------------------------------------------ -------- 8.3状態ラジオボタン ------------------------------------------------------------------------ --------- RuntimeError: unknown option "-tristatevalue" ---< backtrace of Ruby side >----- /usr/local/lib/ruby/1.8/tk.rb:2252:in `__invoke' /usr/local/lib/ruby/1.8/tk.rb:2252:in `_invoke' /usr/local/lib/ruby/1.8/tk.rb:1676:in `_ip_invoke_core' /usr/local/lib/ruby/1.8/tk.rb:1710:in `_tk_call_core' /usr/local/lib/ruby/1.8/tk.rb:1734:in `tk_call' /usr/local/lib/ruby/1.8/tk.rb:3040:in `configure' /usr/local/lib/ruby/1.8/tk.rb:3874:in `method_missing' widget:641:in `_null_binding' widget:636:in `_null_binding' widget:635:in `_null_binding' widget:556:in `_null_binding' widget:556:in `_null_binding' widget:568:in `invoke' widget:219 /usr/local/lib/ruby/1.8/tk/event.rb:419:in `install_bind_for_event_class' /usr/local/lib/ruby/1.8/tk.rb:1187:in `cb_eval' /usr/local/lib/ruby/1.8/tk.rb:1138:in `call' /usr/local/lib/ruby/1.8/tk.rb:1304:in `callback' /usr/local/lib/ruby/1.8/tk.rb:1303:in `callback' /usr/local/lib/ruby/1.8/tk.rb:1334:in `mainloop' /usr/local/lib/ruby/1.8/tk.rb:1537:in `mainloop' widget:888 ---< backtrace of Tk side >------- invoked from within "rb_out c00007 285 279" (command bound to event) ------------------------------------------------------------------------ ---------- メニュー 2、メニューとカスケードを含んだウィンドウ(Tk8.x専用) メニューが出てこない。 3、メニューとカスケードを含んだウィンドウ(機能に対応したバー ジョンのTkが必要) メニューが出てこない。 ダイアログウィンドウ 1、メッセージボックス いくつかボタンを押していると操作不能になり強制終了しかなくなる。 2、ファイル選択ダイアログ 機能していないと思います。 上記の不具合ですが、これはAquaTclTkをインストールしていな いデフォルトの10.4.3の方でも同じ不具合がでています。 また、上記のパーティションでいったんインストールした 1.8.4pr2を削除して ./configure --enable-pthread 以下でインストールして、 $ irb irb(main):001:0> require "tk" => true irb(main):002:0> Tk.mainloop として出てくるウィンドウから「About Tcl Tk...」を選択すると Tcl Tk 8.4.7となります。 AquaTcl/Tkは、/usr/local/lib,/usr/local/includeにシンボ リックリンクは、張りませんので、デフォルトの8.4.7とリンク しています。 ruby-1.8.4/ext/tk/sample/demos-jp/widgetの動作に関しては、かなり 荒いです。 他にも変な動作するものがあるかもしれません。 とりあえず報告まで。 Ryutaro Amano wn9r-amn / asahi-net.or.jp