On 8/28/2015 4:52 AM, Christian Gollwitzer wrote:

Here is a small patch which improves the error message a lot:
diff -ru Python-3.4.3/Modules/_tkinter.c
Python-3.4.3-patched/Modules/_tkinter.c
--- Python-3.4.3/Modules/_tkinter.c    2015-02-25 12:27:45.000000000 +0100
+++ Python-3.4.3-patched/Modules/_tkinter.c    2015-08-28
10:27:15.000000000 +0200
@@ -276,7 +276,8 @@
  static PyObject *
  Tkinter_Error(PyObject *v)
  {
-    PyErr_SetString(Tkinter_TclError, Tkapp_Result(v));
+    const char *errorInfo = Tcl_GetVar(Tkapp_Interp(v), "errorInfo",
TCL_GLOBAL_ONLY);
+    PyErr_SetString(Tkinter_TclError, errorInfo);
      return NULL;
  }


Instead of just the error, this prints the full Tcl stack trace.

Compare:
=========== before ============
Apfelkiste:Python-3.4.3 chris$ ./python.exe
Python 3.4.3 (default, Aug 28 2015, 10:33:48)
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
 >>> import tkinter; root=tkinter.Tk()
 >>> root.eval("grid rowconfigure . 0 -weight {}")
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
_tkinter.TclError: expected integer but got ""
=============================

with

=========== after =============
Apfelkiste:Python-3.4.3-patched chris$ ./python.exe
Python 3.4.3 (default, Aug 28 2015, 10:29:50)
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
 >>> import tkinter; root=tkinter.Tk()
 >>> root.eval("grid rowconfigure . 0 -weight {}")
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
_tkinter.TclError: expected integer but got ""
     while executing
"grid rowconfigure . 0 -weight {}"
 >>>
==================================

Is there a chance to get this fixed upstream in Tkinter?

There might be if someone opened a new tkinter tracker issue for this. Can you do so?

--
Terry Jan Reedy

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to