------ art_35784_8290629.1145020606024 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Thank you that really cleared things up :) But I don't understand this line though >entry.bind('Return', proc{button.invoke}) It doesn't seem to make any difference whether I include it in the program or not. I tried to read about it in the documentation, but I only understood that it had something to do with invoking the command of the button. 2006/4/14, Hidetoshi NAGAI <nagai / ai.kyutech.ac.jp>: > > Hmmm... There are some problems. > > From: "Jeppe Jakobsen" <jeppe88 / gmail.com> > Subject: Re: Q about tk buttons > Date: Thu, 13 Apr 2006 22:33:18 +0900 > Message-ID: <99b4ad3b0604130633t48adb432n4417c3fd27f3b8f4 / mail.gmail.com> > > > require "tk" > > #methods > > def guess > > if (guess.value == right_guess.value) > > status.value = "Correct!" > > else > > number_of_guess.numeric += 1 > > status.value = "Sorry, no luck" > > end > > end > > Probably, you'll want to refer local variables on main. > But those variables are out of scope in the method. > If arguments bothers you, you can use a Proc object instead of a method. > > Next, please see here. > > > def guess > ^^^^^ > > guess = TkVariable.new() > ^^^^^ > > There is conflict of names. > So, "proc{guess}" refers the local variable. > If you want to call "guess" method, you must use "proc{guess()}". > > > root = Tk.mainloop > > Probably, the return value is not useful. > > If I were you, I may write such like as the following. > ---------------------------------------------------- > require 'tk' > > right_guess = rand(21) > number_of_guess = TkVariable.new(0) > > Tk.root.title('Number guess') > > TkLabel.new(:textvariable=>number_of_guess).pack(:side=>:top, > :pady=>10) > > status = TkLabel.new(:text=>"Entry your guess and press the button", > :width=>37).pack(:side=>:bottom, :pady=>10) > > entry = TkEntry.new.pack(:side=>:top, :pady=>10) > > guess_cmd = proc{ > value = entry.value > if value.empty? || value.to_i != right_guess > number_of_guess.numeric += 1 > status.text('Sorry, no luck') > else > status.text('Correct!') > end > } > > button = TkButton.new(:text=>'Guess', > :command=>guess_cmd).pack(:side=>:top, :p\ady=>10) > > entry.bind('Return', proc{button.invoke}) > > Tk.mainloop > ---------------------------------------------------- > -- > Hidetoshi NAGAI (nagai / ai.kyutech.ac.jp) > > -- "winners never quit, quitters never win" ------ art_35784_8290629.1145020606024--