From: aito@...5nazha.yz.yamagata-u.ac.jp (Akinori ITO) Date: 1997-04-03T11:13:38+09:00 Subject: [ruby-list:2576] Re: a mailer written in ruby/Tk > 面倒でなければ自分でおいていただけるとありがたいです. それもそうですね(^_^; というわけで置いておきました。よろしくおねがいします。 > あ,そうそう.gui.rbで > > require "base64" -> require "kconv" > j2e() -> Kconv::toeuc() > > の置換を行い,かつ156行目のinsertにもこれを噛ますと文字化け > が無くなり,MIME対応までしてくれます. Kconv があるのをすっかり忘れてました。(/lib しか見てなかった) 使わせてもらいます。 ところで、tk のプログラムを書いていて気になったことがあります。 callback についてなのですが、例として、押した回数を表示する ボタンを作ってみます。 require "tk" class Counter def initialize @count = 1 @button = TkButton.new { text @count command proc{ succ } pack } end def succ @count += 1 @button.configure('text',@count) end end c = Counter.new Tk.mainloop このプログラムは、うまく動きません。 TkButton.new の後のイテレータ ブロックの中では、インスタンス変数やインスタンスメソッドが使えない ようです。しかし、initialize を def initialize @count = 1 @button = TkButton.new { pack } @button.configure('text',@count) @button.bind("Button-1", proc{ succ }) end とすると動いてくれます。イテレータブロックを誰がいつ評価するかを 考えれば理解できなくもないのですが、ちょっとまぎらわしいですよね。 -- aito