Index: Modules/_tkinter.c =================================================================== --- Modules/_tkinter.c (revision 67313) +++ Modules/_tkinter.c (working copy) @@ -1903,7 +1903,7 @@ * function or method. */ static int -PythonCmd(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]) +PythonCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]) { PythonCmd_ClientData *data = (PythonCmd_ClientData *)clientData; PyObject *self, *func, *arg, *res; @@ -1919,11 +1919,12 @@ func = data->func; /* Create argument list (argv1, ..., argvN) */ - if (!(arg = PyTuple_New(argc - 1))) + if (!(arg = PyTuple_New(objc - 1))) return PythonCmd_Error(interp); - for (i = 0; i < (argc - 1); i++) { - PyObject *s = PyUnicode_FromString(argv[i + 1]); + for (i = 0; i < (objc - 1); i++) { + PyObject *s = PyUnicode_FromUnicode(Tcl_GetUnicode(objv[i + 1]), + Tcl_GetCharLength(objv[i + 1])); if (!s || PyTuple_SetItem(arg, i, s)) { Py_DECREF(arg); return PythonCmd_Error(interp); @@ -1983,7 +1984,7 @@ Tkapp_CommandProc(CommandEvent *ev, int flags) { if (ev->create) - *ev->status = Tcl_CreateCommand( + *ev->status = Tcl_CreateObjCommand( ev->interp, ev->name, PythonCmd, ev->data, PythonCmdDelete) == NULL; else @@ -2037,7 +2038,7 @@ } else { ENTER_TCL - err = Tcl_CreateCommand( + err = Tcl_CreateObjCommand( Tkapp_Interp(self), cmdName, PythonCmd, (ClientData)data, PythonCmdDelete) == NULL; LEAVE_TCL