ruby/tk FAQ

とりあえず中村典嗣 15 Dec 1999 この文書は、 Perl/Tk FAQ 1.00 07 を手本にして ruby/tk FAQ を作成したものです。 linuxdoc-sgml を使用していますが、使い始めたばかりなので、まだ、良く分かっていないため、いろいろ変だと思います。まあ、内容もそうなんですが。

目次

1 ruby/tk とは何ですか？ 4

2 ruby/tk と tcltk, tcltklib ライブラリの違いは何ですか？ 4

3 ruby/tk をインストールするのに Tcl/Tk は必要ですか？ 4

4 どこにあるの？ 4

5 どこ？ ruby の配布先は 4

6 どうやってインストールするの？ 4

7 ドキュメントはどこにありますか？ 5 7.1 ruby/tk のマニュアル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 7.2 ruby のマニュアル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 7.3 Tcl/Tk のマニュアル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

8 どうやって ruby/tk スクリプトを書けば？ 7

9 ruby/tk で使える widget の種類は？ 8

10 How do I get widget X to do Y ? 8 10.1 ボタンを押したとき実行されるコマンドを ruby のメソッドに結びつけるには？ . . . . . . . . 9 10.2 ボタンの上にマウスが来たときにイメージを変更するには？ . . . . . . . . . . . . . . . . . . . 9 10.3 widgets の配置はどうやったら良いの？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 10.4 ダイアログとか、メニューとか、その他ポップアップするようなのはどうやったら？ . . . . . . 10 10.5 キーアクションと動作を結びつけるには？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 10.6 キーバインディングを加えるには？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 10.7 スケールの動きをバインドするには？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 10.8 一つのスクロールバーを複数の widgets に結びつけるには？ . . . . . . . . . . . . . . . . . . . 11 10.9 ビットマップを表示するには？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 10.10イメージを表示するには？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 10.11どんなイメージが表示できますか？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 10.12リストボックス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 10.13テキスト widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 10.14ラジオボタンのグループ化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 10.15フォントの指定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 10.16エントリー widget の内容を取り出すには？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 10.17エントリーでパスワード入力を隠すには？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 10.18エントリーで入力幅を制限するには？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 10.19メニュー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

11 キャンバスにはどうやって？ 13 11.1 キャンバスにビットマップを表示するには？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 11.2 表示したのを消すには？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 11.3 キャンバスにイメージを表示するには？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 11.4 キャンバス上にどのようなものが描画できますか？ . . . . . . . . . . . . . . . . . . . . . . . . 14 11.5 キャンバス上に線を再描画するには？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 11.6 キャンバスのデータを PostScript(c) に出力するには？ . . . . . . . . . . . . . . . . . . . . . . 15 11.7 キャンバスの大きさを表示するには？リサイズ後は？ . . . . . . . . . . . . . . . . . . . . . . 15

12 共通した問題 15 12.1 => とか . とかの意味は？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 12.2 カーソルやカラーを変えるには？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 12.3 ベルを鳴らすには？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 12.4 実行時に ruby や、 ruby/tk や、 Tcl/Tk のバージョンを知るには？ . . . . . . . . . . . . . . . 16

13 Tcl/Tk と ruby/tk との違いは？ 16

14 どうやって新しいスクリプト、モジュール、拡張を入れたら良いの？ 17

15 どうやって新しいモジュールを書けば良いの？ 17

16 複合 Widgets について 17 16.1 ダイアログボックスありますか？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 16.2 ファイル選択は？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 16.3 カラーエディターは？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 16.4 tkerror に相当するものは？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 16.5 テーブルはありますか？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

17 プログラミング開発ツール 18 17.1 Tcl/Tk から ruby/Tk へのコンバータありますか？ . . . . . . . . . . . . . . . . . . . . . . . . 18 17.2 ruby/tk 用のデバッガってありますか？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

17.3 ruby/tk に GUI ビルダーありますか？ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 18 どうやったらスクリーンをクリアできるの？ 18 19 ruby/tk の中で X アプリケーションを描画？ 18 20 Microsoft Windows(tm) でも使えますか？ 18 21 ruby/tk では、日本語使えるの？ 19 22 ruby から使えるツールキットって他にありますか？ 19 23 どこで、グラフィックス関連の情報を得られますか？ 20 24 ruby/tk で書かれた主なアプリケーションは？ 20 25 ruby/tk の歴史は？ 20 26 将来 21 27 どうやったらこの FAQ の最新バージョンを手に入れられるの？ 21 28 謝辞 21

1 ruby/tk とは何ですか？

ruby/tk は、強力なオブジェクト指向スクリプト言語である ruby と、手軽に GUI プログラムを作成できる Tcl/Tk を組み合わせることで、楽しく、プログラムをすることを目指したものです。

2 ruby/tk と tcltk, tcltklib ライブラリの違いは何ですか？

tcltk ライブラリは、 Tcl/Tk の C ライブラリを利用するための高 (中?) 水準インターフェースを提供します。このライブラリは ruby から Tcl/Tk ライブラリを利用するためのもので、内部で tcltklib ライブラリを利用しています。

tcltklib ライブラリは、 Tcl/Tk の C ライブラリを利用するための低水準インターフェースを提供します。 (<– マニュアルから引っ張って来ただけ)

3 ruby/tk をインストールするのに Tcl/Tk は必要ですか？

ruby/tk は、 Perl/Tk とは違い、 Tcl/Tk から独立していませんので、 (というよりもソースに含まれていないというべきか？ ) ヘッダ tcl.h, tk.h とライブラリ libtcl*, libtk* が必要です。 (tclConfig.sh, tkConfig.sh は使用しないのかな？ )

つまり、あらかじめ Tcl/Tk をインストールしておけば、 Tcl/Tk の全ソースは必要では、ありません。

4 どこにあるの？

ソースコード ruby のソースに含まれています。 ruby のソースの配布先は、 ftp のミラー

     <http://www.ruby-lang.org/ja/mirrors.html>を見てください。

バイナリーなし。 rpm, deb とかには、含まれているのか？

Physical メディア ruby 本におそらく付くでしょう？

5 どこ？ ruby の配布先は

  ftp のミラー <http://www.ruby-lang.org/ja/mirrors.html> を見てください

6 どうやってインストールするの？

Tcl/Tk 例えば、 tcl8.05 + jp パッチの場合 (ファイル名は適宜読み変えてください)

      % mkdir tcl-tk8.0.5jp1.6
      % cd tcl-tk8.0.5jp1.6
      % tar zxvf tcl8.0.5.tar.gz
      % tar zxvf tk8.0.5.tar.gz

% cd tcl8.0.5
% zcat tcl8.0.5jp1.6.patch.gz | patch -p1
% cd ../tk8.0.5
% zcat tk8.0.5jp1.6.patch.gz | patch -p1
% cd ../tcl8.0.5/unix
% ./configure --enable-shared
% make
% make test
% cd ../../tk8.0.5/unix/
% ./configure --enable-shared --with-tcl=../../tcl8.0.5/unix
% make
% make test
# cd tcl8.0.5/unix
% make -n install
# make install
# cd ../../tk8.0.5/unix/
% make -n install
# make install

ruby

% ./configure
% make
# make install

うまく行かない場合は、 ext/tcltklib/extconf.rb を直したりする。

ruby/tk の動作する環境の例

• FreeBSD:

• Linux:

• SunOS:

• Solaris:

• Windows:

Mac はどうなんだろう？

7 ドキュメントはどこにありますか？

7.1 ruby/tk のマニュアル

man ページ man 形式はなし。 HTML 形式は、 ruby のマニュアルに付属？

ニュースグループ fj.comp.lang.ruby

メーリングリスト ruby-list@netlab.co.jp デモプログラム

contrib/ にあります。 Ruby Tk-widget-demo-*.tar.gz という感じのファイル。と、 Tcl/Tk8.1 用のデモ

が立石さん Web <http://kt-www.jaist.ac.jp:8000/ ttate/ftp/> から手にいれることができます。

インターネット上の ruby/tk リソース

 Ruby 関連 ML トピックス <http://ruby.freak.ne.jp/ml-topics.html>

Tk の項目が参考になります。

 Ruby/Tk チュートリアル <http://www.cdrom.co.jp/ hiramatsu/>

平松さんのページ

 ruby による Verilog 用波形ビューワ <http://kondara.sdri.co.jp/ kikutani/>

菊谷さんのページ

 ruby で楽しいプログラミング <http://www2.osk.3web.ne.jp/ nkon/3web/ruby/>

近藤さんのページ

 Ruby 工房 <http://www.ueda.info.waseda.ac.jp/ igarashi/work/ruby/>

五十嵐さんのページ

 ruby の指環 <http://www.nerv.org/eda/ruby/>

江田さんのページ

 Ruby Ruby Ruby <http://www.ne.scphys.kyoto-u.ac.jp/ thitoshi/ruby/>

高橋さんのページ

 Ruby ¿ (Smalltalk + Perl) / 2 <http://www02.so-net.ne.jp/ greentea/ruby/>

greentea さんのページ。『入門 tcl/tk』のサンプルコードを ruby/tk のコードに変換しています。

 Ruby/Tk で遊ぼう <http://www.iis.u-tokyo.ac.jp/ msato/ruby/index-j.html>

さとうさんのページ。

その他のリソース NIFTY Serve FGALTS MES5 「純正和製｜ ruby 天国／みんなで遊ぼう！」

7.2 ruby のマニュアル

紙の ruby 本も出版されました。雑誌でも、数多く記事になっています。出版物 (主に雑誌) に登場した

Ruby <http://www.ruby-lang.org/ja/press.html>を御覧ください。

man ページ man はソースに付いています。 HTML 形式は、 doc/ にあります。リファレンスマニュアルが contrib/ に rubytk-*.rd.gz という感じのファイル名であります。

ニュースグループ fj.comp.lang.ruby

メーリングリスト ruby-list@netlab.co.jp

デモプログラムソースの中の ext/tk/sample にあります。

インターネット上の ruby リソース

Ruby 関連ページたち <http://www.ruby-lang.org/ja/links.html>を見てください。

その他のリソース NIFTY Serve FGALTS MES5 「純正和製｜ ruby 天国／みんなで遊ぼう！」

7.3 Tcl/Tk のマニュアル

ruby/tk を使うには、 Tcl/Tk の知識も必要です。 Tcl/Tk の文献は、…

入門 Tcl/Tk

     入門 Tcl/Tk <http://www.shuwasystem.co.jp/books/wwwsrch/cgi-bin/content/795/index.htm>

入門 tcl/tk

     入門 tcl/tk <http://www.ascii.co.jp/books/detail/4-7561/4-7561-1293-5.html>

Tcl/Tk 入門

     Tcl/Tk 入門 <http://tsmz.topica.ne.jp/topub/display.asp?sku=4-8101-8597-4>

Tcl/Tk プログラミング入門 Tcl/Tk プログラミング入門

     <http://www.ohmsha.co.jp/data/books/contents/4-274-06115-9.htm>

Tcl&Tk ツールキット Tcl&Tk ツールキット

     <http://books.softbank.co.jp/bookweb.nsf/7fec73b8359bedeb4925663500009b0c/b350fac633e2a715492565020029247c?OpenDocument>

はじめての Tcl/Tk

     はじめての Tcl/Tk <http://www2.gihyo.co.jp/books/bookinfo.asp?ID=469>

8 どうやって ruby/tk スクリプトを書けば？

他の ruby スクリプトと同じように書き始めます。例えば、

#!/usr/local/bin/ruby

とか。

一番簡単な ”こんにちは” を表示するスクリプトはこう書けます。

#!/usr/local/bin/ruby
require "tk"
TkLabel.new {
  text ' こんにちは'
}.pack
TkButton.new {
  text ' 終了'
  command 'exit'
}.pack
Tk.mainloop

別の書き方をすると、

#!/usr/local/bin/ruby
require "tk"
TkLabel.new {
  text ' こんにちは'
  pack
}
TkButton.new {
  text ' 終了'
  command 'exit'
  pack
}
Tk.mainloop

#!/usr/local/bin/ruby
require "tk"
TkLabel.new (Tk.root, 'text' => ' こんにちは').pack
TkButton.new (Tk.root, 'text' => ' 終了', 'command' => 'exit').pack
Tk.mainloop

9 ruby/tk で使える widget の種類は？

Tcl/Tk で使えるもの+α (使える widget の種類でなくクラスを書くべきか？ )

Combobox

     [ruby-list:18167] <http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/18167>

10 How do I get widget X to do Y ?

もし、ボタンが欲しかったら、

     TkButton.new

とすれば良い。もし、このボタンに後で操作を加えたいならば、

     button = TkButton.new

というように、〜を変数に入れておく。これだけでは、画面に表示されないので、

     button.pack

と、 pack する。とりあえず、ボタンを表示するスクリプトの全部を書くと、

#!/usr/local/bin/ruby
require "tk"
button = TkButton.new
button.pack
Tk.mainloop

のようになる。このボタンには、ラベルがついていないが、 configure メソッドでつけることができる。

#!/usr/local/bin/ruby
require "tk"
button = TkButton.new
button.configure('text' => 'Press me!')
button.pack
Tk.mainloop

このスクリプトを別の書き方をすると、次のようになる。

#!/usr/local/bin/ruby
require "tk"
button = TkButton.new {
  text 'Press me!'
}.pack
Tk.mainloop

このコードでは、ボタンを押しても何も起こらない。ボタンを押したときの動作をメソッドにバインドする仕方は、後ほど…

10.1 ボタンを押したとき実行されるコマンドを ruby のメソッドに結びつけるには？

command option ？でボタンを作成したときか、 pack したときにこうやって指定すれば良い。

10.2 ボタンの上にマウスが来たときにイメージを変更するには？

image と activeimage を指定する

10.3 widgets の配置はどうやったら良いの？

Tcl/Tk と同様に、 packer, placer, grid を使用する。

widget.pack

#!/usr/local/bin/ruby
require "tk"
top2 = TkToplevel.new
frame = TkFrame.new(top2)
frame.pack
TkLabel.new(frame) {
  text 'Left2'
  pack('side' => 'left')
}
TkLabel.new(frame) {
  text 'Right2'
  pack('side' => 'right')
}
TkLabel.new(top2) {
  text 'Bottom2'
  pack('side' => 'bottom')
}
Tk.mainloop

10.4 ダイアログとか、メニューとか、その他ポップアップするようなのはどうやったら？

シンプルなダイアログボックスは、 TkDialog クラスを使えば良いでしょう。

もし、 TkDialog クラスなどを使わないのであれば、

top = TkToplevel.new

などのように、 TkToplevel クラスを使用します。

10.5 キーアクションと動作を結びつけるには？

widget.bind(’<keyname>’, action)

or widget.bind ’<keyname>’, action

10.6 キーバインディングを加えるには？

10.7 スケールの動きをバインドするには？

#!/usr/local/bin/ruby
require "tk"
items = ["One", "Two", "Three", "Four",
  "Five", "Six", "Seven", "Eight",

  "Nine", "Ten", "Eleven", "Twelve"]
scroll = TkScrollbar.new
box = TkListbox.new {
  relief 'sunken'
#  width -1
  height 5
  setgrid 'yes'
  yscrollcommand proc{|idx| scroll.set *idx}
}.pack('side'=>'left','fill'=>'both','expand'=>'yes')
scroll.command(proc{|*args| box.yview *args})
scroll.pack('side'=>'right', 'fill'=>'y')
for i in items
  box.insert 'end', i
end
Tk.mainloop

10.8 一つのスクロールバーを複数の widgets に結びつけるには？

10.9 ビットマップを表示するには？

     TkLabel.new {
       bitmap 'bitmap-name'
     }.pack('side' => 'top')
     TkLabel.new {
       bitmap ('@' + ['.','images','face.bmp'].join(File::Separator))
     }.pack('side' => 'top')

10.10 イメージを表示するには？

#!/usr/local/bin/ruby
require "tk"
TkLabel.new {
  text 'Main'
}.pack
$imggif = TkPhotoImage.new {
  file '/usr/local/lib/tk4.2jp/demos/images/earth.gif'
}
TkLabel.new {
  image $imggif
}.pack
TkButton.new {
  text 'close'
  command 'Tk.root.destroy'
}.pack('side' => 'left')

TkButton.new {
  text 'exit'
  command 'exit'
}.pack('side' => 'right')
Tk.mainloop

10.11 どんなイメージが表示できますか？

Tcl/Tk に準ずる

10.12 リストボックス

10.13 テキスト widget

10.14 ラジオボタンのグループ化

variable を指定。 variable は、 TkVariable クラスを使用。

#!/usr/local/bin/ruby
require "tk"
letters = TkVariable.new
TkRadioButton.new {
  bitmap '@/usr/local/lib/tk4.2jp/demos/images/letters.bmp'
  variable letters
  value 'full'
}.pack
TkRadioButton.new {
  bitmap '@/usr/local/lib/tk4.2jp/demos/images/noletter.bmp'
  variable letters
  value 'empty'
}.pack
Tk.mainloop

10.15 フォントの指定

#!/usr/local/bin/ruby
require "tk"
TkLabel.new {
  text 'Foo'
  font 'fixed'
}.pack

Tk.mainloop

10.16 エントリー widget の内容を取り出すには？

#!/usr/local/bin/ruby
require "tk"
def do_print(entered)
  print "The string \"#{entered}\" was entered.\n"
end
$user_entry = TkVariable.new
entry = TkEntry.new {
  textvariable $user_entry
}.pack
TkButton.new {
  text ' 表示'
  command proc { do_print $user_entry.value}
}.pack
Tk.mainloop

10.17 エントリーでパスワード入力を隠すには？

show というのを使用します。

     $user_entry = TkVariable.new
     entry = TkEntry.new {
       textvariable $user_entry
       show '*'
     }.pack

10.18 エントリーで入力幅を制限するには？

10.19 メニュー

11 キャンバスにはどうやって？

11.1 キャンバスにビットマップを表示するには？

     canvar = TkCanvas.new
     TkcBitmap.new(canvar, 50, 50,
                  'bitmap' => '@/usr/local/lib/tk4.2jp/demos/images/letters.bmp')
     canvar.pack

11.2 表示したのを消すには？

     canvar.delete(bittag)

11.3 キャンバスにイメージを表示するには？

#!/usr/local/bin/ruby
require "tk"
canvas = TkCanvas.new
image = TkPhotoImage.new('file' => '/usr/local/lib/tk4.2jp/demos/images/earth.gif')
TkcImage.new(canvas, 50, 50,
                         'image' => image)
canvas.pack
Tk.mainloop

11.4 キャンバス上にどのようなものが描画できますか？

      arc        sections of circle
      bitmap     for X11 bitmap files/builtins
      image      for Photo image types (gif, xpm, xbm, ...)
      line
      oval       includes circles
      polygon    may be -filled
      rectangle  may also be -filled
      text       similar to Text widget primitive
      window     allows embeddding of other widgets

11.5 キャンバス上に線を再描画するには？

#!/usr/local/bin/ruby
require "tk"
def push_it(line)
  line.coords 0, 0, 100, 100
end
c = TkCanvas.new
i = TkcLine.new(c, 0, 0, 50, 50)
c.pack
TkButton.new {
  text 'extend'
  command proc { push_it i}
}.pack
Tk.mainloop

11.6 キャンバスのデータを PostScript(c) に出力するには？

#!/usr/local/bin/ruby
require "tk"
min_x = 0
min_y = 0
c = TkCanvas.new
i = TkcLine.new(c, 0, 0, 50, 50)
c.pack
ps = c.postscript('x' => min_x,
                         'y' => min_y,
                         'width' => c.cget('width'),
                         'height' => c.cget('height'))
f = open('file.ps', 'w')
f.print ps
f.close
Tk.mainloop

11.7 キャンバスの大きさを表示するには？リサイズ後は？

     canvas.cget('width')

12 共通した問題

12.1 => とか . とかの意味は？

=> は Hash . はメソッド

12.2 カーソルやカラーを変えるには？

基本的には、

     widget.configure('cursor' => ...)

12.3 ベルを鳴らすには？

簡単には、

     widget.bell

スクリプトで例を書くと、

#!/usr/local/bin/ruby
require "tk"
button = TkButton.new {
 text 'Bell'
 command proc{ self.bell }
}.pack
Tk.mainloop

12.4 実行時に ruby や、 ruby/tk や、 Tcl/Tk のバージョンを知るには？

    ruby      VERSION
    ruby/tk ない？
    Tcl       Tk::TCL_VERSION
    Tk        Tk::TK_VERSION
    日本語化? Tk::JAPANIZED_TK

13 Tcl/Tk と ruby/tk との違いは？

what              Tcl/Tk                 ruby/Tk
variable          set a 123              a = 123 or a = '123'
 initialization
re-assignment     set b $a               b = a
lists/arrays      set a {1 2 fred 7.8}   a = [1, 2, 'fred', 7.8]
re-assignment     list set b $a          b = a
associative       set a(Jan) 456.02      a = {'Jan' => 456.02, 'Feb' => 534.96}
 arrays           set a(Feb) 534.96
re-assignment     foreach i \            b = a
                   [array names a] {
                  set b($i) = $a($i) }
expressions       set a [expr $b+$c]     a = b + c
increment         incr i                 i += 1
declare           proc plus {a b} {      def plus(a, b)
 subroutines       expr $a + $b }            return a + b
                                         end
variable scope    local default          local default
                  override w/ "global"
call              plus 1 2               plus(1,2)
 subroutines
statement sep     newline or at ";"      newline or at ";"

 statement         "\" - newline          none required
  continuation
 verbatim strings  {}                     ''
  e.g.             {a \ lot@ of $stuff}   'a \ lot@ of $stuff'
 escaped strings   ""                     ""
  e.g.             "Who\nWhat\nIdunno"    "Who\nWhat\nIdunno"
 STDOUT            puts "Hello World!"    print "Hello!\n"
                   puts stdout "Hello!"   $stdout.print "Hello World!\n"

14 どうやって新しいスクリプト、モジュール、拡張を入れたら良いの？

スクリプト普通の ruby スクリプト同じに

モジュールどういったのに相当するのかな？

Extensions どういったのに相当するのかな？

15 どうやって新しいモジュールを書けば良いの？

Perl/Tk と違って、現在の ruby/tk は、 Tcl/Tk 非依存でないので、 C で、ごりごりモジュールを書くことはない？ tcltk-ext 使用して、 Tix, BLT <http://www.tcltk.com/blt/> とか整備したいなああと、 expect も

16 複合 Widgets について

複合 Widgets とは、 pure な Tcl/Tk が持っている widget や ruby/tk のクラスを組み合わせて、 100% pure ruby/tk widget を作ったもの (^^; ライブラリの tkscrollbox.rb が、例らしいです。

  [ruby-list:5610] <http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/5610>
[ruby-list:5611] <http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/5611> で、解説さ

れています。

16.1 ダイアログボックスありますか？

TkDialog クラスというのがあります。使い方は、 Ruby Tk-widget-demo を参照のこと

16.2 ファイル選択は？

ある。使い方は、 Ruby Tk-widget-demo の filebox.rb を参照のこと

16.3 カラーエディターは？

Ruby Tk-widget-demo の色選択ダイアログを改造すれば？ Perl/Tk のモジュールにこういうのがあるのか？

16.4 tkerror に相当するものは？

ruby に備わっている例外処理以外にあるのかな？

16.5 テーブルはありますか？

100% pure ruby/tk な、テーブルクラスはない tcltk-ext を使って BLT <http://www.tcltk.com/blt/>

を呼び出せば実現できると思う。または、 Tktable <http://oprs.mchh.siemens.de/tcl/capp/>とか。

17 プログラミング開発ツール

ruby の起動オプションに -w をつけて起動？

17.1 Tcl/Tk から ruby/Tk へのコンバータありますか？

今のところありません

17.2 ruby/tk 用のデバッガってありますか？

ない？

17.3 ruby/tk に GUI ビルダーありますか？

ない

18 どうやったらスクリーンをクリアできるの？

19 ruby/tk の中で X アプリケーションを描画？

20 Microsoft Windows(tm) でも使えますか？

使えます。 Windows95 Tcl7.6jp/Tk4.2jp + ruby??? で起動を確かめました

• Cygwin 版

Tcl7.6jp+Tk4.2jp

OK? Tcl8.0.x+Tk8.0.x

OK? Tcl8.1.x+Tk8.1.x

OK?

Tcl8.2.x+Tk8.2.x

OK?

• mswin32 版

Tcl7.6jp+Tk4.2jp

OK? Tcl8.0.x+Tk8.0.x

OK? Tcl8.1.x+Tk8.1.x

OK? Tcl8.2.x+Tk8.2.x

OK?

21 ruby/tk では、日本語使えるの？

日本語化された Tcl/Tk を入れていれば、日本語が使えるはずです。 (Windows で、日本語化されていない Tcl/Tk 8.x 系はどうなんだろう？ )

22 ruby から使えるツールキットって他にありますか？

EZWGL モジュール

EZWGL <http://www.ma.utexas.edu/ mzou/EZWGL/> を扱うモジュールが前田さんによって作られ

ています。現在ネットワーク上では手に入らないかも？ FLTK モジュール

FLTK <http://fltk.easysw.com/> を扱うモジュールを立石さんによって作られています。立石さん

Web <http://kt-www.jaist.ac.jp:8000/ ttate/ftp/> から手にいれることができます。

gtk モジュール gtk <http://www.gtk.org/> を扱うモジュールがまつもとさんによって作られています。現在は、五十嵐さんがメンテしています。 contrib/ にあります

XForms モジュール

XForms <http://bragg.phys.uwm.edu/xforms/> を扱うモジュールが立石さんによって作られていま

す。 contrib/ にあります Xtoolkit モジュール

Athena widget や Motif を扱うモジュールが前田さんによって作られています contrib/ にあります XView モジュール

XView を扱うモジュールが立石さんによって作られています contrib/ にあります Xlib モジュール

Xlib を扱うモジュールがもりきゅうさんによって作られています Moriq Ruby

<http://www.users.yun.co.jp/ moriq/ruby/>にあります

23 どこで、グラフィックス関連の情報を得られますか？

GD モジュール GIF ライブラリである (最近は PNG ライブラリになっちゃった) GD <http://www.boutell.com/gd/> が ruby から使えます contrib/ にあります

Open, Mesa-GL モジュール contrib/ にあります

24 ruby/tk で書かれた主なアプリケーションは？

Ruby Tk-widget-demo

永井氏らによる Tcl/Tk の widget demo の ruby/tk 版です。 contrib/ にあります emie

あ伊藤氏作のメールリーダです。 contrib/ にあります mine

前橋氏作のテキストエディタです。 contrib/ にあります Othello game

前田氏作のオセロゲームです。現在ネットワーク上では手に入らないかも？ SGmail

鴫原氏作のメールリーダです。 SGmail <http://www.sgmail.org/> から手にいれることができます。 hanoi

Python のデモをコンバートしてみました [ruby-list:6616]

<http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ poffice/mail/ruby/6616> から手にいれる

ことができます。箱入り娘

 「箱入り娘」 tk 版です。 I like Ruby <http://www2a.biglobe.ne.jp/ seki/ruby/> から手にいれる

ことができます。 TKCAL

ふなば氏作のカレンダーです。 Ruby <http://www.kt.rim.or.jp/ tadf/ruby.html> から手にいれる

ことができます。

25 ruby/tk の歴史は？

• tk 相当前から

• tcltklib 1997 Sep.

• tcltk-ext

• tcltklib, tk に 26. 将来 21

26 将来

27 どうやったらこの FAQ の最新バージョンを手に入れられるの？

未定

28 謝辞

ruby の作者であるまつもとさん

Tcl/Tk の作者である John K. Ousterhout 博士

ruby-list ML で私の幼稚な質問に答えてくださった方々その他 ruby/tk を使用している人々