From: Jesus Jesus <jesussalas187 / hotmail.com> Subject: Re: invoke a event in ruby/tk Date: Wed, 3 Jun 2009 14:00:35 +0900 Message-ID: <ae9487e505cd5fc4e0af26c5f1ef5a65 / ruby-forum.com> > #here is my doubt > #entry.bind("Up",proc{call Tktable.bind("Up")})??????? > #remember that we cant to lose the focus from the entry > #my intention is replic the event up and down when Tktable has the focus > #my first idea was invoke a default event. in this case 'up' 'Down' > #i dont know if this is possble > #do you have a better idea? I see. Usually, when want to send event, use "event_generate" method. But Key events have no effect without focus. So, you will need a little tricky call. For example, ---------------------------------------------------------------- require "tk" require 'tkextlib/tktable' root=TkRoot.new entry=TkEntry.new(root).place(:x=>0,:y=>0) table=Tk::TkTable.new(root).place(:x=>0,:y=>40) table['selecttype']='row' table.selection_set('0,0') entry.focus table.activate('0,0') # without 'active' element, Up/Down key may not work entry.bind('KeyPress-Up'){ table.focus # force mode "table.focus(true)" may be required table.event_generate('KeyPress-Up') entry.focus # force mode "entry.focus(true)" may be required } entry.bind('KeyPress-Down'){ table.focus # force mode "table.focus(true)" may be required table.event_generate('KeyPress-Down') entry.focus # force mode "entry.focus(true)" may be required } Tk.mainloop ---------------------------------------------------------------- If you use a TkVirtualEvent object, ---------------------------------------------------------------- require "tk" require 'tkextlib/tktable' root=TkRoot.new entry=TkEntry.new(root).place(:x=>0,:y=>0) table=Tk::TkTable.new(root).place(:x=>0,:y=>40) table['selecttype']='row' table.selection_set('0,0') entry.focus virtual_event = TkVirtualEvent.new('KeyPress-Up', 'KeyPress-Down') table.activate('0,0') # without 'active' element, Up/Down key may not work entry.bind(virtual_event, :keysym){|keysym| table.focus # force mode "table.focus(true)" may be required table.event_generate(keysym) #or table.event_generate('KeyPress-' << keysym) entry.focus # force mode "entry.focus(true)" may be required } Tk.mainloop ---------------------------------------------------------------- -- Hidetoshi NAGAI (nagai / ai.kyutech.ac.jp)