diff options
Diffstat (limited to 'ext/tk/sample/tcltklib/sample1.rb')
-rw-r--r-- | ext/tk/sample/tcltklib/sample1.rb | 304 |
1 files changed, 152 insertions, 152 deletions
diff --git a/ext/tk/sample/tcltklib/sample1.rb b/ext/tk/sample/tcltklib/sample1.rb index 1965781533..3235edfe0d 100644 --- a/ext/tk/sample/tcltklib/sample1.rb +++ b/ext/tk/sample/tcltklib/sample1.rb @@ -1,131 +1,131 @@ #! /usr/local/bin/ruby -d -# -*- encoding: euc-jp -*- -# -d オプションを付けると, デバッグ情報を表示する. +# -*- encoding: utf-8 -*- +# -d 激с潟篁, 井宴茵腓冴. -# tcltk ライブラリのサンプル +# tcltk ゃ泣潟 -# まず, ライブラリを require する. +# 障, ゃ require . require "tcltk" -# 以下は, Test1 のインスタンスの initialize() で, -# tcl/tk に関する処理を行う例である. -# 必ずしもそのようにする必要は無く, -# (もし, そうしたければ) class の外で tcl/tk に関する処理を行っても良い. +# 篁ヤ, Test1 ゃ潟鴻帥潟鴻 initialize() , +# tcl/tk ≪茵箴с. +# 綽綽荀<, +# (, ) class 紊 tcl/tk ≪茵c. class Test1 - # 初期化(インタプリタを生成してウィジェットを生成する). + # (ゃ潟帥帥c吾с). def initialize() - #### 使う前のおまじない + #### 篏帥障 - # インタプリタの生成. + # ゃ潟帥帥. ip = TclTkInterpreter.new() - # コマンドに対応するオブジェクトを c に設定しておく. + # 潟潟絲上吾с c 荐絎. c = ip.commands() - # 使用するコマンドに対応するオブジェクトは変数に入れておく. + # 篏睡潟潟絲上吾с紊違ャ. append, bind, button, destroy, incr, info, label, place, set, wm = c.values_at( "append", "bind", "button", "destroy", "incr", "info", "label", "place", "set", "wm") - #### tcl/tk のコマンドに対応するオブジェクト(TclTkCommand)の操作 + #### tcl/tk 潟潟絲上吾с(TclTkCommand)篏 - # 実行する時は, e() メソッドを使う. - # (以下は, tcl/tk における info command r* を実行.) + # 絎茵, e() <純篏帥. + # (篁ヤ, tcl/tk info command r* 絎茵.) print info.e("command", "r*"), "\n" - # 引数は, まとめた文字列にしても同じ. + # 綣違, 障絖. print info.e("command r*"), "\n" - # 変数を用いなくとも実行できるが, 見ためが悪い. + # 紊違絎茵с, 荀. print c["info"].e("command", "r*"), "\n" - # インタプリタのメソッドとしても実行できるが, 効率が悪い. + # ゃ潟帥帥<純絎茵с, 合. print ip.info("command", "r*"), "\n" #### - # 以下, 生成したオブジェクトは変数に代入しておかないと - # GC の対象になってしまう. + # 篁ヤ, 吾с紊違篁eャ + # GC 絲乗院c障. - #### tcl/tk の変数に対応するオブジェクト(TclTkVariable)の操作 + #### tcl/tk 紊違絲上吾с(TclTkVariable)篏 - # 生成と同時に値を設定する. + # ゃ荐絎. v1 = TclTkVariable.new(ip, "20") - # 読み出しは get メソッドを使う. + # 茯水冴 get <純篏帥. print v1.get(), "\n" - # 設定は set メソッドを使う. + # 荐絎 set <純篏帥. v1.set(40) print v1.get(), "\n" - # set コマンドを使って読み出し, 設定は可能だが見ためが悪い. - # e() メソッド等の引数に直接 TclTkObject や数値を書いても良い. + # set 潟潟篏帥c茯水冴, 荐絎純荀. + # e() <純膈綣違贋・ TclTkObject 医ゃ吾. set.e(v1, 30) print set.e(v1), "\n" - # tcl/tk のコマンドで変数を操作できる. + # tcl/tk 潟潟у違篏с. incr.e(v1) print v1.get(), "\n" append.e(v1, 10) print v1.get(), "\n" - #### tcl/tk のウィジェットに対応するオブジェクト(TclTkWidget)の操作 + #### tcl/tk c吾с絲上吾с(TclTkWidget)篏 - # ルートウィジェットを取り出す. + # 若c吾с冴. root = ip.rootwidget() - # ウィジェットの操作. + # c吾с篏. root.e("configure -height 300 -width 300") - # タイトルを付けるときは wm を使う. + # 帥ゃ篁 wm 篏帥. wm.e("title", root, $0) - # 親ウィジェットとコマンドを指定して, ウィジェットを作る. + # 荀c吾с潟潟絎, c吾с篏. l1 = TclTkWidget.new(ip, root, label, "-text {type `x' to print}") - # place すると表示される. + # place 茵腓冴. place.e(l1, "-x 0 -rely 0.0 -relwidth 1 -relheight 0.1") - # コマンド名は文字列で指定しても良いが, 見ためが悪い. - # (コマンド名は独立した引数でなければならない.) + # 潟潟絖ф絎, 荀. + # (潟潟腴綣違с違.) l2 = TclTkWidget.new(ip, root, "label") - # ウィジェットの操作. + # c吾с篏. l2.e("configure -text {type `q' to exit}") place.e(l2, "-x 0 -rely 0.1 -relwidth 1 -relheight 0.1") - #### tcl/tk のコールバックに対応するオブジェクト(TclTkCallback)の操作 + #### tcl/tk 潟若絲上吾с(TclTkCallback)篏 - # コールバックを生成する. + # 潟若. c1 = TclTkCallback.new(ip, proc{sample(ip, root)}) - # コールバックを持つウィジェットを生成する. + # 潟若ゃc吾с. b1 = TclTkWidget.new(ip, root, button, "-text sample -command", c1) place.e(b1, "-x 0 -rely 0.2 -relwidth 1 -relheight 0.1") - # イベントループを抜けるには destroy.e(root) する. + # ゃ潟若 destroy.e(root) . c2 = TclTkCallback.new(ip, proc{destroy.e(root)}) b2 = TclTkWidget.new(ip, root, button, "-text exit -command", c2) place.e(b2, "-x 0 -rely 0.3 -relwidth 1 -relheight 0.1") - #### イベントのバインド - # script の追加 (bind tag sequence +script) は今のところできない. - # (イテレータ変数の設定がうまくいかない.) + #### ゃ潟ゃ潟 + # script 菴遵 (bind tag sequence +script) 篁с. + # (ゃ若水違荐絎障.) - # 基本的にはウィジェットに対するコールバックと同じ. + # 堺c吾с絲障潟若. c3 = TclTkCallback.new(ip, proc{print("q pressed\n"); destroy.e(root)}) bind.e(root, "q", c3) - # bind コマンドで % 置換によりパラメータを受け取りたいときは, - # proc{} の後ろに文字列で指定すると, - # 置換結果をイテレータ変数を通して受け取ることができる. - # ただし proc{} の後ろの文字列は, - # bind コマンドに与えるコールバック以外で指定してはいけない. + # bind 潟潟 % 臀<若帥, + # proc{} 緇絖ф絎, + # 臀腟ゃ若水違с. + # proc{} 緇絖, + # bind 潟潟筝潟若篁ュф絎. c4 = TclTkCallback.new(ip, proc{|i| print("#{i} pressed\n")}, "%A") bind.e(root, "x", c4) - # TclTkCallback を GC の対象にしたければ, - # dcb() (または deletecallbackkeys()) する必要がある. + # TclTkCallback GC 絲乗院, + # dcb() (障 deletecallbackkeys()) 綽荀. cb = [c1, c2, c3, c4] c5 = TclTkCallback.new(ip, proc{|w| TclTk.dcb(cb, root, w)}, "%W") bind.e(root, "<Destroy>", c5) cb.push(c5) - #### tcl/tk のイメージに対応するオブジェクト(TclTkImage)の操作 + #### tcl/tk ゃ<若吾絲上吾с(TclTkImage)篏 - # データを指定して生成する. + # 若帥絎. i1 = TclTkImage.new(ip, "photo", "-file maru.gif") - # ラベルに張り付けてみる. + # 綣泣篁帥. l3 = TclTkWidget.new(ip, root, label, "-relief raised -image", i1) place.e(l3, "-x 0 -rely 0.4 -relwidth 0.2 -relheight 0.2") - # 空のイメージを生成して後で操作する. + # 腥冴ゃ<若吾緇ф篏. i2 = TclTkImage.new(ip, "photo") - # イメージを操作する. + # ゃ<若吾篏. i2.e("copy", i1) i2.e("configure -gamma 0.5") l4 = TclTkWidget.new(ip, root, label, "-relief raised -image", i2) @@ -134,26 +134,26 @@ class Test1 #### end - # サンプルのためのウィジェットを生成する. + # 泣潟c吾с. def sample(ip, parent) bind, button, destroy, grid, toplevel, wm = ip.commands().values_at( "bind", "button", "destroy", "grid", "toplevel", "wm") ## toplevel - # 新しいウインドウを開くには, toplevel を使う. + # 違ゃ潟, toplevel 篏帥. t1 = TclTkWidget.new(ip, parent, toplevel) - # タイトルを付けておく + # 帥ゃ篁 wm.e("title", t1, "sample") - # ウィジェットが破壊されたとき, コールバックが GC の対象になるようにする. + # c吾с翫, 潟若 GC 絲乗院. cb = [] cb.push(c = TclTkCallback.new(ip, proc{|w| TclTk.dcb(cb, t1, w)}, "%W")) bind.e(t1, "<Destroy>", c) - # ボタンの生成. + # 帥潟. wid = [] - # toplevel ウィジェットを破壊するには destroy する. + # toplevel c吾с翫 destroy . cb.push(c = TclTkCallback.new(ip, proc{destroy.e(t1)})) wid.push(TclTkWidget.new(ip, t1, button, "-text close -command", c)) cb.push(c = TclTkCallback.new(ip, proc{test_label(ip, t1)})) @@ -183,7 +183,7 @@ class Test1 cb.push(c = TclTkCallback.new(ip, proc{test_canvas(ip, t1)})) wid.push(TclTkWidget.new(ip, t1, button, "-text canvas -command", c)) - # grid で表示する. + # grid ц;腓冴. ro = co = 0 wid.each{|w| grid.e(w, "-row", ro, "-column", co, "-sticky news") @@ -196,38 +196,38 @@ class Test1 end # inittoplevel(ip, parent, title) - # 以下の処理をまとめて行う. - # 1. toplevel ウィジェットを作成する. - # 2. コールバックを登録する配列を用意し, toplevel ウィジェットの - # <Destroy> イベントにコールバックを削除する手続きを登録する. - # 3. クローズボタンを作る. - # 作成した toplevel ウィジェット, クローズボタン, コールバック登録用変数 - # を返す. - # ip: インタプリタ - # parent: 親ウィジェット - # title: toplevel ウィジェットのウインドウのタイトル + # 篁ヤ障茵. + # 1. toplevel c吾с篏. + # 2. 潟若脂蚊, toplevel c吾с + # <Destroy> ゃ潟潟若ゃ膓脂蚊. + # 3. 若冴帥潟篏. + # 篏 toplevel c吾с, 若冴帥, 潟若脂牙紊 + # 菴. + # ip: ゃ潟帥 + # parent: 荀c吾с + # title: toplevel c吾сゃ潟帥ゃ def inittoplevel(ip, parent, title) bind, button, destroy, toplevel, wm = ip.commands().values_at( "bind", "button", "destroy", "toplevel", "wm") - # 新しいウインドウを開くには, toplevel を使う. + # 違ゃ潟, toplevel 篏帥. t1 = TclTkWidget.new(ip, parent, toplevel) - # タイトルを付けておく + # 帥ゃ篁 wm.e("title", t1, title) - # ウィジェットが破壊されたとき, コールバックが GC の対象になるようにする. + # c吾с翫, 潟若 GC 絲乗院. cb = [] cb.push(c = TclTkCallback.new(ip, proc{|w| TclTk.dcb(cb, t1, w)}, "%W")) bind.e(t1, "<Destroy>", c) - # close ボタンを作っておく. - # toplevel ウィジェットを破壊するには destroy する. + # close 帥潟篏c. + # toplevel c吾с翫 destroy . cb.push(c = TclTkCallback.new(ip, proc{destroy.e(t1)})) b1 = TclTkWidget.new(ip, t1, button, "-text close -command", c) return t1, b1, cb end - # label のサンプル. + # label 泣潟. def test_label(ip, parent) button, global, label, pack = ip.commands().values_at( "button", "global", "label", "pack") @@ -235,7 +235,7 @@ class Test1 ## label - # いろいろな形のラベル. + # 綵≪. l1 = TclTkWidget.new(ip, t1, label, "-text {default(flat)}") l2 = TclTkWidget.new(ip, t1, label, "-text raised -relief raised") l3 = TclTkWidget.new(ip, t1, label, "-text sunken -relief sunken") @@ -244,23 +244,23 @@ class Test1 l6 = TclTkWidget.new(ip, t1, label, "-bitmap error") l7 = TclTkWidget.new(ip, t1, label, "-bitmap questhead") - # pack しても表示される. + # pack 茵腓冴. pack.e(b1, l1, l2, l3, l4, l5, l6, l7, "-pady 3") ## -textvariable - # tcltk ライブラリの実装では, コールバックは tcl/tk の``手続き''を通して - # 呼ばれる. したがって, コールバックの中で(大域)変数にアクセスするときは, - # global する必要がある. - # global する前に変数に値を設定してしまうとエラーになるので, - # tcl/tk における表現形だけ生成して, 実際に値を設定しないように, - # 2 番目の引数には nil を与える. + # tcltk ゃ絎茖с, 潟若 tcl/tk ``膓'' + # 若違. c, 潟若筝(紊у)紊違≪祉鴻, + # global 綽荀. + # global 紊違ゃ荐絎障若, + # tcl/tk 茵憜就, 絎ゃ荐絎, + # 2 綣違 nil 筝. v1 = TclTkVariable.new(ip, nil) global.e(v1) v1.set(100) - # -textvariable で変数を設定する. + # -textvariable у違荐絎. l6 = TclTkWidget.new(ip, t1, label, "-textvariable", v1) - # コールバックの中から変数を操作する. + # 潟若筝紊違篏. cb.push(c = TclTkCallback.new(ip, proc{ global.e(v1); v1.set(v1.get().to_i + 10)})) b2 = TclTkWidget.new(ip, t1, button, "-text +10 -command", c) @@ -270,14 +270,14 @@ class Test1 pack.e(l6, b2, b3) end - # button のサンプル. + # button 泣潟. def test_button(ip, parent) button, pack = ip.commands().values_at("button", "pack") t1, b1, cb = inittoplevel(ip, parent, "button") ## button - # コールバック内で参照する変数は先に宣言しておかなければならない. + # 潟若ус紊違絎h違. b3 = b4 = nil cb.push(c = TclTkCallback.new(ip, proc{b3.e("flash"); b4.e("flash")})) b2 = TclTkWidget.new(ip, t1, button, "-text flash -command", c) @@ -288,7 +288,7 @@ class Test1 pack.e(b1, b2, b3, b4) end - # checkbutton のサンプル. + # checkbutton 泣潟. def test_checkbutton(ip, parent) checkbutton, global, pack = ip.commands().values_at( "checkbutton", "global", "pack") @@ -298,13 +298,13 @@ class Test1 v1 = TclTkVariable.new(ip, nil) global.e(v1) - # -variable で変数を設定する. + # -variable у違荐絎. ch1 = TclTkWidget.new(ip, t1, checkbutton, "-onvalue on -offvalue off", "-textvariable", v1, "-variable", v1) pack.e(b1, ch1) end - # radiobutton のサンプル. + # radiobutton 泣潟. def test_radiobutton(ip, parent) global, label, pack, radiobutton = ip.commands().values_at( "global", "label", "pack", "radiobutton") @@ -314,10 +314,10 @@ class Test1 v1 = TclTkVariable.new(ip, nil) global.e(v1) - # ヌルストリングは "{}" で指定する. + # 鴻潟違 "{}" ф絎. v1.set("{}") l1 = TclTkWidget.new(ip, t1, label, "-textvariable", v1) - # -variable で同じ変数を指定すると同じグループになる. + # -variable у紊違絎違若. ra1 = TclTkWidget.new(ip, t1, radiobutton, "-text radio1 -value r1 -variable", v1) ra2 = TclTkWidget.new(ip, t1, radiobutton, @@ -328,7 +328,7 @@ class Test1 pack.e(b1, l1, ra1, ra2, ra3) end - # scale のサンプル. + # scale 泣潟. def test_scale(ip, parent) global, pack, scale = ip.commands().values_at( "global", "pack", "scale") @@ -339,7 +339,7 @@ class Test1 v1 = TclTkVariable.new(ip, nil) global.e(v1) v1.set(219) - # コールバック内で参照する変数は先に宣言しておかなければならない. + # 潟若ус紊違絎h違. sca1 = nil cb.push(c = TclTkCallback.new(ip, proc{global.e(v1); v = v1.get(); sca1.e("configure -background", format("#%02x%02x%02x", v, v, v))})) @@ -348,7 +348,7 @@ class Test1 pack.e(b1, sca1) end - # entry のサンプル. + # entry 泣潟. def test_entry(ip, parent) button, entry, global, pack = ip.commands().values_at( "button", "entry", "global", "pack") @@ -358,7 +358,7 @@ class Test1 v1 = TclTkVariable.new(ip, nil) global.e(v1) - # ヌルストリングは "{}" で指定する. + # 鴻潟違 "{}" ф絎. v1.set("{}") en1 = TclTkWidget.new(ip, t1, entry, "-textvariable", v1) cb.push(c = TclTkCallback.new(ip, proc{ @@ -367,7 +367,7 @@ class Test1 pack.e(b1, en1, b2) end - # text のサンプル. + # text 泣潟. def test_text(ip, parent) button, pack, text = ip.commands().values_at( "button", "pack", "text") @@ -377,13 +377,13 @@ class Test1 te1 = TclTkWidget.new(ip, t1, text) cb.push(c = TclTkCallback.new(ip, proc{ - # 1 行目の 0 文字目から最後までを表示し, 削除する. + # 1 茵 0 絖緇障с茵腓冴, ゃ. print(te1.e("get 1.0 end")); te1.e("delete 1.0 end")})) b2 = TclTkWidget.new(ip, t1, button, "-text print -command", c) pack.e(b1, te1, b2) end - # raise/lower のサンプル. + # raise/lower 泣潟. def test_raise(ip, parent) button, frame, lower, pack, raise = ip.commands().values_at( "button", "frame", "lower", "pack", "raise") @@ -391,9 +391,9 @@ class Test1 ## raise/lower - # button を隠すテストのために, frame を使う. + # button 鴻, frame 篏帥. f1 = TclTkWidget.new(ip, t1, frame) - # コールバック内で参照する変数は先に宣言しておかなければならない. + # 潟若ус紊違絎h違. b2 = nil cb.push(c = TclTkCallback.new(ip, proc{raise.e(f1, b2)})) b2 = TclTkWidget.new(ip, t1, button, "-text raise -command", c) @@ -405,21 +405,21 @@ class Test1 pack.e(b1, f1) end - # modal なウィジェットのサンプル. + # modal c吾с泣潟. def test_modal(ip, parent) button, frame, message, pack, tk_chooseColor, tk_getOpenFile, tk_messageBox = ip.commands().values_at( "button", "frame", "message", "pack", "tk_chooseColor", "tk_getOpenFile", "tk_messageBox") - # 最初に load されていないライブラリは ip.commands() に存在しないので, - # TclTkLibCommand を生成する必要がある. + # load ゃ ip.commands() 絖, + # TclTkLibCommand 綽荀. tk_dialog = TclTkLibCommand.new(ip, "tk_dialog") t1, b1, cb = inittoplevel(ip, parent, "message/modal") ## message - mes = "これは message ウィジェットのテストです." - mes += "以下は modal なウィジェットのテストです." + mes = " message c吾с鴻с." + mes += "篁ヤ modal c吾с鴻с." me1 = TclTkWidget.new(ip, t1, message, "-text {#{mes}}") ## modal @@ -431,7 +431,7 @@ class Test1 b2 = TclTkWidget.new(ip, t1, button, "-text messageBox -command", c) # tk_dialog cb.push(c = TclTkCallback.new(ip, proc{ - # ウィジェット名を生成するためにダミーの frame を生成. + # c吾с若 frame . print tk_dialog.e(TclTkWidget.new(ip, t1, frame), "dialog dialog error 2 yes no cancel"), "\n"})) b3 = TclTkWidget.new(ip, t1, button, "-text dialog -command", c) @@ -449,7 +449,7 @@ class Test1 pack.e(b1, me1, b2, b3, b4, b5) end - # menu のサンプル. + # menu 泣潟. def test_menu(ip, parent) global, menu, menubutton, pack = ip.commands().values_at( "global", "menu", "menubutton", "pack") @@ -458,29 +458,29 @@ class Test1 ## menu - # menubutton を生成する. + # menubutton . mb1 = TclTkWidget.new(ip, t1, menubutton, "-text menu") - # menu を生成する. + # menu . me1 = TclTkWidget.new(ip, mb1, menu) - # mb1 から me1 が起動されるようにする. + # mb1 me1 莎桁. mb1.e("configure -menu", me1) - # cascade で起動される menu を生成する. + # cascade ц儀 menu . me11 = TclTkWidget.new(ip, me1, menu) - # radiobutton のサンプル. + # radiobutton 泣潟. v1 = TclTkVariable.new(ip, nil); global.e(v1); v1.set("r1") me11.e("add radiobutton -label radio1 -value r1 -variable", v1) me11.e("add radiobutton -label radio2 -value r2 -variable", v1) me11.e("add radiobutton -label radio3 -value r3 -variable", v1) - # cascade により mb11 が起動されるようにする. + # cascade mb11 莎桁. me1.e("add cascade -label cascade -menu", me11) - # checkbutton のサンプル. + # checkbutton 泣潟. v2 = TclTkVariable.new(ip, nil); global.e(v2); v2.set("none") me1.e("add checkbutton -label check -variable", v2) - # separator のサンプル. + # separator 泣潟. me1.e("add separator") - # command のサンプル. + # command 泣潟. v3 = nil cb.push(c = TclTkCallback.new(ip, proc{ global.e(v1, v2, v3); print "v1: ", v1.get(), ", v2: ", v2.get(), @@ -495,7 +495,7 @@ class Test1 pack.e(b1, mb1, om1, "-side left") end - # listbox のサンプル. + # listbox 泣潟. def test_listbox(ip, parent) clipboard, frame, grid, listbox, lower, menu, menubutton, pack, scrollbar, selection = ip.commands().values_at( @@ -506,11 +506,11 @@ class Test1 ## listbox/scrollbar f1 = TclTkWidget.new(ip, t1, frame) - # コールバック内で参照する変数は先に宣言しておかなければならない. + # 潟若ус紊違絎h違. li1 = sc1 = sc2 = nil - # 実行時に, 後ろにパラメータがつくコールバックは, - # イテレータ変数でそのパラメータを受け取ることができる. - # (複数のパラメータはひとつの文字列にまとめられる.) + # 絎茵, 緇<若帥ゃ潟若, + # ゃ若水違с<若帥с. + # (茲違<若帥蚊ゃ絖障.) cb.push(c1 = TclTkCallback.new(ip, proc{|i| li1.e("xview", i)})) cb.push(c2 = TclTkCallback.new(ip, proc{|i| li1.e("yview", i)})) cb.push(c3 = TclTkCallback.new(ip, proc{|i| sc1.e("set", i)})) @@ -532,17 +532,17 @@ class Test1 me1 = TclTkWidget.new(ip, mb1, menu) mb1.e("configure -menu", me1) cb.push(c = TclTkCallback.new(ip, proc{ - # clipboard をクリア. + # clipboard . clipboard.e("clear") - # selection から文字列を読み込み clipboard に追加する. + # selection 絖茯粋昭 clipboard 菴遵. clipboard.e("append {#{selection.e('get')}}")})) me1.e("add command -label {selection -> clipboard} -command",c) cb.push(c = TclTkCallback.new(ip, proc{ - # li1 をクリア. + # li1 . li1.e("delete 0 end") - # clipboard から文字列を取り出し, 1 行ずつ + # clipboard 絖冴, 1 茵 selection.e("get -selection CLIPBOARD").split(/\n/).each{|line| - # li1 に挿入する. + # li1 水ャ. li1.e("insert end {#{line}}")}})) me1.e("add command -label {clipboard -> listbox} -command",c) @@ -557,7 +557,7 @@ class Test1 pack.e(f2, f1) end - # canvas のサンプル. + # canvas 泣潟. def test_canvas(ip, parent) canvas, lower, pack = ip.commands().values_at("canvas", "lower", "pack") t1, b1, cb = inittoplevel(ip, parent, "canvas") @@ -566,36 +566,36 @@ class Test1 ca1 = TclTkWidget.new(ip, t1, canvas, "-width 400 -height 300") lower.e(ca1, b1) - # rectangle を作る. + # rectangle 篏. idr = ca1.e("create rectangle 10 10 20 20") - # oval を作る. + # oval 篏. ca1.e("create oval 60 10 100 50") - # polygon を作る. + # polygon 篏. ca1.e("create polygon 110 10 110 30 140 10") - # line を作る. + # line 篏. ca1.e("create line 150 10 150 30 190 10") - # arc を作る. + # arc 篏. ca1.e("create arc 200 10 250 50 -start 0 -extent 90 -style pieslice") - # i1 は本当は, どこかで破壊しなければならないが, 面倒なので放ってある. + # i1 綵, х翫違, √ф障c. i1 = TclTkImage.new(ip, "photo", "-file maru.gif") - # image を作る. + # image 篏. ca1.e("create image 100 100 -image", i1) - # bitmap を作る. + # bitmap 篏. ca1.e("create bitmap 260 50 -bitmap questhead") - # text を作る. + # text 篏. ca1.e("create text 320 50 -text {drag rectangle}") - # window を作る(クローズボタン). + # window 篏(若冴帥). ca1.e("create window 200 200 -window", b1) - # bind により rectangle を drag できるようにする. + # bind rectangle drag с. cb.push(c = TclTkCallback.new(ip, proc{|i| - # i に x と y を受け取るので, 取り出す. + # i x y , 冴. x, y = i.split(/ /); x = x.to_f; y = y.to_f - # 座標を変更する. + # 綺ф紊眼. ca1.e("coords current #{x - 5} #{y - 5} #{x + 5} #{y + 5}")}, - # x, y 座標を空白で区切ったものをイテレータ変数へ渡すように指定. + # x, y 綺ф腥榊純у阪cゃ若水違御検絎. "%x %y")) - # rectangle に bind する. + # rectangle bind . ca1.e("bind", idr, "<B1-Motion>", c) pack.e(ca1) @@ -605,7 +605,7 @@ end # test driver if ARGV.size == 0 - print "#{$0} n で, n 個のインタプリタを起動します.\n" + print "#{$0} n , n ゃ潟帥帥莎桁障.\n" n = 1 else n = ARGV[0].to_i @@ -614,16 +614,16 @@ end print "start\n" ip = [] -# インタプリタ, ウィジェット等の生成. +# ゃ潟帥, c吾с膈. for i in 1 .. n ip.push(Test1.new()) end -# 用意ができたらイベントループに入る. +# сゃ潟若ャ. TclTk.mainloop() print "exit from mainloop\n" -# インタプリタが GC されるかのテスト. +# ゃ潟帥帥 GC 鴻. ip = [] print "GC.start\n" if $DEBUG GC.start() if $DEBUG |