On Oct 16, 2006, at 10:53 AM, Mer Gilmartin wrote:

> Hidetoshi NAGAI wrote:
>> ----<sample 5>--------------------------------------
>> @mytext = 'hi this is a test'
>> testtwo = TkEntry.new(Frameone)
>> testtwo.value = @mytext
>> ev = TkVirtualEvent.new('Button-1', 'Return')
>> testtwo.bind(ev){@mytext = testtwo.value; puts @mytext}
>> ----------------------------------------------------
>> and so on.
>
> Trying your examples and think I understand them and what
> they are doing. I have a much better idea of how to use
> tkvirtual event anyway.
>
> But The data in the entry box goes into the
> variable as soon as I click on the entry box. Not when i click
> on the button. Button-1 means left click so I see why this is
> so.
>
> How do I change the action to clicking on a button?
> I was wondering if the button name instead of button-1 might do
> it. But of course it doesnt.

Bind 'ButtonRelease-1' and its action to your button widget.  
Supposing your button is referenced by the variable 'my_btn', then  
the following should work:

     my_btn.bind('ButtonRelease-1'){@mytext = testtwo.value; puts  
@mytext}

I prefer handling a 'ButtonRelease-1' event to a 'Button-1' (an alias  
for 'ButtonPress-1') because it gives the user a chance withdraw from  
committing to a widget action to by clicking off the widget in question.

If you need to bind more than one event to the button, then use a  
virtual event as Nagai san demonstrated.

Regards, Morton