[Python-Dev] PEP needed? Introducing Tcl objects
Martin v. Loewis
martin@v.loewis.de
15 Feb 2002 21:13:43 +0100
"Fredrik Lundh" <fredrik@pythonware.com> writes:
> > For backward compatibility, there is an option on the tkapp object to
> > determine whether strings or objects are returned. This is on by
> > default when using Tkinter
>
> "on" as in "return strings" or "return objects" ?
In Tkinter, it returns objects by default.
> I doubt it's a good idea to change the return type without any
> warning.
This is not as bad as it sounds. For most functions, the return type
does not change at all. Consider
def winfo_depth(self):
"""Return the number of bits per pixel."""
return getint(self.tk.call('winfo', 'depth', self._w))
'winfo depth' will return a Tcl int in Tcl, which is currently
converted to a string in _tkinter, then converted back to an int.
With the change, tk.call will already return an int, so the getint
invocation becomes a no-op.
For others, a conversion into string will continue to return the value
that it currently returns:
>>> l=Tkinter.Label()
>>> l.config("foreground")[3]
<color object at 0x0824b4b0>
>>> str(_)
'Black'
I would expect that few if any applications will be affected; those
would need to change the default after import Tkinter.
> if the default is "use old behaviour", check it in.
>
> if you insist on changing the return types, post it to SF.
I'd like to change the return types. If that is not acceptable, I'd
like to produce a DeprecationWarning if Tkinter is imported and the
new-style behaviour (return objects) is not enabled.
Regards,
Martin