A Dangling Tk Entry

Marc 'BlackJack' Rintsch bj_666 at gmx.net
Mon Mar 9 11:35:04 EDT 2009


On Mon, 09 Mar 2009 04:22:57 -0700, W. eWatson wrote:

> Marc 'BlackJack' Rintsch wrote:
>> On Sun, 08 Mar 2009 22:20:09 -0700, W. eWatson wrote:
>> 
>>> You didn't answer my question why entry is necessary at all. The
>>> original author thought it was necessary to return entry. I'll give
>>> you a peek at a segment of the code I'm working with here:
>>>
>>> class Enter_Data_Dialog(tkSimpleDialog.Dialog):
>>>
>>>      def __init__(self, parent, sdict):
>>>          self.sdict = sdict
>>>          tkSimpleDialog.Dialog.__init__(self, parent)
>>>
>>>      def body(self,master):
>>>          self.title("Set a Number Entry Dialog")
>>>
>>>          Label( master, text="Number ").grid(row=0, sticky=W)
>>>          self.anumberVar = StringVar()
>>>          entry = Entry(master, width=10,
>>>   			textvariable=self.anumberVar).grid(row=0,
>> column=1)
>>>          self.anumberVar.set( "%d" % self.sdict["anumber"] )
>>>
>>>          return entry
>> 
>> `entry` is unnecessary here.  But that was not obvious from your
>> previous example, as you trimmed the code.  Now it is clear that
>> `entry` is always `None` because that's what `grid()` returns.
>> 
>> But according to the docs this method should return the widget, that
>> should get the focus, so maybe the author really wanted to return the
>> `Entry` instance here, instead of `None`.
>
> He's got to return something, because he uses it upon return, as here:

`entry` is always `None`, so it is the same as returning nothing because 
every function has an implicit ``return None`` at the end.

>      def Set_Enter_Data(self):
>          sdict = {}
>          sdict[ "ok" ] = False
>          sdict[ "anumber" ] = self.anumber
>          dialog = Enter_Data_Dialog( self.master, sdict ) <--- returning

That's not a call to the `body()` method so that ``return`` is irrelevant 
here.  Here an instance of `Enter_Data_Dialog` is created.  No ``return`` 
involved.

BTW if this is really just a dialog to enter a number, the functions 
`askinteger()` or `askfloat()` from the `tkSimpleDialog` module can be 
used.

Ciao,
	Marc 'BlackJack' Rintsch



More information about the Python-list mailing list