>>Me:
>> I asked what kinds of bytes are accepted as tkinter parameters.
>> I still wonder why they are accepted at all.
>> Does anyone know a reason for this
>> or has a link to some relevant discussion?
>Terry Reedy:
> I do not remember any particular public discussion of tkinter on the dev
> lists. I suspect the reason is a) avoid breaking old code and b) tkinter
> (tk inter-face) passes params on to tk which expects byte strings. I
> would not be surprised if tkinter has to encode py3 (unicode) strings
> before passing them on.
If I interpret the code in _tkinter.c correctly
Python bytes are converted to a String Tcl_Obj
and Python str to a Unicode Tcl_Obj:
AsObj(PyObject *value)
{
...
if (PyBytes_Check(value))
return Tcl_NewStringObj(PyBytes_AS_STRING(value),
PyBytes_GET_SIZE(value));
...
else if (PyUnicode_Check(value)) {
...
return Tcl_NewUnicodeObj(inbuf, size);
...
}
And as Martin pointed out:
>That's basically because the port from 2.x was shallow: it supports the
>exact same feature set that 2.x supports, with just the type names
>swapped.
If I don't want bytes to get passed to tkinter
I just have to raise an exception in AsObj, no?
Or is it even sufficient to just remove the bytes case?
Regards and thanks for your answers.
Matthias Kievernagel.
--
http://mail.python.org/mailman/listinfo/python-list