# 9. トラブルシューティング

## 9.1

    #!/usr/bin/env ruby

    require 'tk'

    for i in [0, 1, 2]
      p defined?(i)
      TkButton.new {
        text "Button #{i}"
        command { puts "click Button #{i}!!" }
        pack
      }
    end

    Tk.mainloop

以下のように記述すれば、意図通りに動くでしょう。

    #!/usr/bin/env ruby

    require 'tk'

    #i = 1

    [0, 1, 2].each do |i|
      p defined?(i)
      TkButton.new {
        text "Button #{i}"
        command { puts "click Button #{i}!!" }
        pack
      }
    end

    Tk.mainloop

## 9.2

以下のように記述したところ、エラーが起きてうまく動きません。

    #!/usr/bin/env ruby

    require "tk"

    class App
      def initialize
        TkButton.new {
          text "Push Me!"
          #command { p self }
          command { push }
          pack
        }
        Tk.mainloop
      end

      def push
        puts "push!"
      end
    end

    App.new

うまくいく例

    #!/usr/bin/env ruby

    require "tk"

    class App
      def initialize
        b = TkButton.new
        b.text "Push Me!"
        #b.command { p self }
        b.command { push }
        b.pack
        Tk.mainloop
      end

      def push
        puts "push!"
      end
    end

    App.new

reverse link: [RubyTkFAQ]