Hi all,
I create a checkbutton then bind it to an event as following:
checkbutton1.bind (“ButtonPress-1”) do
puts “check”
$check=“user checks it”
end
puts $check=“user checks it”
I can see Ruby prints out “check” only but not “user checks it”.
And globale variable $check is ignored. Why is it? How can I make
global $check available outside this block?
Thanks,
It should appear. That’s really your code? The only thing that I can
think is that the last puts() is not running. Check it out.
Obviously the puts() is out of the block of what “ButtonPress-1” trigger
when you press it.
But why? I ask Ruby to puts () everything inside the block when I
press the checkbutton. I understand that if I press checkbutton or
check it, what inside the block should be executed, right? since Ruby
can puts() everything inside the block and I pass one string to a global
variable, I expect the global variable should be valid all the time.
If this is not the case, how can I make it work so that when I press or
check the checkbutton, I can puts() outside the block?
Thanks,
No, as I see in your code, there’s no #puts() before the global
variable.
You did this:
checkbutton1.bind (“ButtonPress-1”) do
puts “check”
$check=“user checks it”
end
Perhaps what you want to do this:
checkbutton1.bind (“ButtonPress-1”) do
puts “check”
puts($check = “user checks it”)
end
Then when you press the button you will receive an output like:
#=> check
#=> user checks it
Yes. it is part of my code.
And yes again the last(second puts) is not running. I want to know how
come it doesn’t run as I already press the checkbutton and see Ruby
prints out “check”.
The one outside the block is executed when you shoot your script, since
it’s in the flow of definition of a class(if it’s outside a method
definition), perhaps is that.
Hi Damián,
Please check one of my posts, entitled “how to catch the indicator for a
checkbutton” about this topic.
Hi,
there are 3 puts() here:
checkbutton1.bind (“ButtonPress-1”) do
puts “check”
puts($check = “user checks it”)
end
puts($check = “user checks it”)
I can see the results of two puts(). How about the last puts()? It is
never seen by Ruby. If global varible $check is executed in the block,
how come the one outside the block is ignored? This is the point I don’t
get it.
Thanks,