[issue639266] Tkinter sliently discards all Tcl errors
Guilherme Polo
report at bugs.python.org
Fri Oct 24 14:16:48 CEST 2008
Guilherme Polo <ggpolo at gmail.com> added the comment:
Uhm, long time without discussion but I'm hoping someone interested may
read this.
You have to provide a "bgerror" command to Tcl, so it will get invoked
when a background error happens. Either _tkinter.c could create one for
an interpreter is created or Tkinter.py could create one when a Tk
instance is created. The command will be invoked with a single argument,
the background error message.
If you want to play with it:
import Tkinter
def bgerr_handler(msg):
print msg, "<<"
root = Tkinter.Tk()
root.tk.createcommand("bgerror", bgerr_handler)
btn = Tkinter.Button(command="expr 1/0")
btn.pack()
root.mainloop()
To get some form of traceback you would need to play with inspect and
traceback modules. But in both cases (in the example above and using
inspect) an exception isn't raised at all, and if you try raising then
Tcl will think the bgerror handler failed and will tell you that. For
this reason I would prefer to leave to _tkinter.c to handle this.
----------
nosy: +gpolo
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue639266>
_______________________________________
More information about the Python-bugs-list
mailing list