From: inaba Date: 2008-12-04T08:58:38+09:00 Subject: [ruby-list:45682] Re: TkButton中のクラスメソッド呼出 inabaです。 Hidetoshi NAGAI wrote, (12/04/2008 05:14 AM): > ----------------------------------------------------------------- > def initialize(parent) > f = TkFrame.new(parent).pack > TkButton.new(f, 'text'=>'B', 'command'=>proc{gm; cm}).pack; > end > ----------------------------------------------------------------- > だとか > ----------------------------------------------------------------- > def initialize(parent) > callback = proc{gm; cm} > TkFrame.new(parent){|f| > TkButton.new(f, 'text'=>'B', 'command'=>callback).pack; > }.pack > end > ----------------------------------------------------------------- > だとかのお好みの形で, > cm が見える場所でコールバックとなる手続きオブジェクトを > 定義するようにしてあげればいいはずです. 永井さん、ありがとうございました、これでできました! > TkFrame の new メソッドのブロック中で定義していることが原因です. > このブロックは TkFrame オブジェクトで instance_eval されてますから, > gm は見えても cm は見えないということになります. Ruby歴はけっこう長いのに、こんなところにも気付かぬとは、永遠の初心者ですね(トホホ)。