3
그래서 나는이 응용 프로그램을Ruby + Tk 명령 바인딩 - 범위 문제?
require 'tk'
class Foo
def my_fancy_function
puts "hello, world!"
end
def initialize
@root = TkRoot.new{title "Hello, world!"}
frame = TkFrame.new
my_fancy_button = TkButton.new(frame) do
text "Press meee"
command {my_fancy_function}
pack
end
frame.pack
Tk.mainloop
end
end
bar = Foo.new
을하지만이 버튼을 누르면, 내가 얻을 "나가서 설명하자면 NameError : 정의되지 않은 지역 변수 또는 메소드`my_fancy_function를 '# < TkButton을 위해 ..."난
꽤 범위와 관련된 사소한 것이 빠졌음을 확신합니다 ... 버튼에 명령을 올바르게 바인딩하려면 어떻게해야합니까?
편집 : 매개 변수 내 my_fancy_button
블록을 변경하면 좋아, 즉
my_fancy_button = TkButton.new(frame, :text => "Press meee", :command => proc{my_fancy_function}).pack
그런 다음 그것을 작동합니다. 하지만 왜?
사람과 다른 것을 찾을거야? 아무도?... – KTamas