From: Hidetoshi NAGAI Date: 2003-11-13T13:03:08+09:00 Subject: [ruby-list:38795] Re: How to trap widget command in Ruby/Tk 永井@知能.九工大です. From: Tomoyuki Kosimizu Subject: [ruby-list:38794] How to trap widget command in Ruby/Tk Date: Thu, 13 Nov 2003 11:08:00 +0900 Message-ID: <20031113.111329.59466538.greentea@fa2.so-net.ne.jp> > Ruby/Tkで教えていただきたいことがあります。 > Tcl/Tkで: > set t .t > text $t -width 20 -height 5 > rename $t $t\_ > proc $t {command args} " > set result \[eval uplevel \[list $t\_ \$command \$args\]\] > puts \"\$command \$args\" > return \$result" > pack $t > というコードがあります。これと同じことがRuby/Tkでも可能でしょうか? Ruby/Tk は Tcl/Tk のインタープリタを直接駆動していますから, 配下の Tcl/Tk で可能なことなら,Tcl/Tk 拡張ライブラリの使用も含めて, できないことは存在しないはずです. 上記の例を実装するならこんな感じかと思います. ----------------------------------------------- require 'tk' class TkTrappedText < TkText def trap_callback(cmd, args) p [cmd, args] end def create_self(keys) super(keys) Tk.tk_call('rename', @path, @path + '_') @cmdid = install_cmd(proc{|cmd, args| trap_callback(cmd, tk_split_simplelist(args)) }) Tk.ip_eval(<