Passing the data from a tkEntry widgit to a variable

I'm a bit confused about this,
when you create a TkEntry Widgit on a frame
How exactly do you put the data entered into a variable?

I want it passed when the user clicks a button.

So I was looking at examples and it seemed to say that along
with passing the frame name, i should pass a textvariable linked
too a variable. But thats just throwing errors.

I was looking at examples that seem to bind the data but i was
having difficulty figuring out what they were passing.

Could I bother someone to explain it briefly. I want to be able to
understand it to make sure I can do this.

···

--
Posted via http://www.ruby-forum.com/.

Ok.
Sample code for other newbies.

@mytext = TkVariable.new('hi this is a test')
testtwo = TkEntry.new(Frameone, 'textvariable'=> @mytext)
{
  puts value
}

Value outputs whats been passed to the TkEntry widgit.
I think.

Binding I think will allow data into the widgit
so possibility into the variable. But I havent got that far yet.

···

--
Posted via http://www.ruby-forum.com/.

Message-ID: <29004b56e98ed3a6904a59609e153d88@ruby-forum.com>

Sample code for other newbies.

@mytext = TkVariable.new('hi this is a test')
testtwo = TkEntry.new(Frameone, 'textvariable'=> @mytext)
{
  puts value
}

Value outputs whats been passed to the TkEntry widgit.
I think.

----<sample 1>--------------------------------------
mytext = @mytext = TkVariable.new('hi this is a test')
testtwo = TkEntry.new(Frameone, 'textvariable'=> @mytext)
{
  # self is the TkEntry widget
  self.bind('Button-1'){puts mytext.value}
}

···

From: Mer Gilmartin <merrua@yahoo.co.uk>
Subject: Re: Passing the data from a tkEntry widgit to a variable
Date: Sat, 14 Oct 2006 00:01:34 +0900
----------------------------------------------------

----<sample 2>--------------------------------------
testtwo = TkEntry.new(Frameone)
{
  self.value = 'hi this is a test'
  self.bind('Button-1'){puts self.value}
}
----------------------------------------------------

----<sample 3>--------------------------------------
@mytext = 'hi this is a test'
testtwo = TkEntry.new(Frameone)
testtwo.value = @mytext
testtwo.bind('Button-1'){@mytext = testtwo.value; puts @mytext}
----------------------------------------------------

----<sample 4>--------------------------------------
@mytext = 'hi this is a test'
testtwo = TkEntry.new(Frameone)
testtwo.value = @mytext
callback = proc{@mytext = testtwo.value; puts @mytext}
testtwo.bind('Button-1', callback)
testtwo.bind('Return', callback)
----------------------------------------------------

----<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.
--
Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)

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.

···

--
Posted via http://www.ruby-forum.com/\.

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

···

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.