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.
From: Mer G. [email protected]
Subject: Re: Passing the data from a tkEntry widgit to a variable
Date: Sat, 14 Oct 2006 00:01:34 +0900
Message-ID: [email protected]
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}
}
----<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}
Trying your examples and think I understand them and what
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:
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.
----<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.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.