<br>For a while now, I've noticed test_tcl locking up when trying to refleaktest it. I was able to reproduce it quite simply:<br><br>import Tkinter<br>import os<br><br>if &quot;DISPLAY&quot; in os.environ:<br>&nbsp;&nbsp;&nbsp; del os.environ
[&quot;DISPLAY&quot;]<br><br>tcl = Tkinter.Tcl()<br>try:<br>&nbsp;&nbsp;&nbsp; tcl.loadtk()<br>except Exception, e:<br>&nbsp;&nbsp;&nbsp; print e<br>tcl.loadtk()<br><br>Or, more directly, using _tkinter directly:<br><br clear="all">import _tkinter<br>
import os<br><br>if &quot;DISPLAY&quot; in os.environ:<br>&nbsp;&nbsp;&nbsp; del os.environ[&quot;DISPLAY&quot;]<br><br>tk = _tkinter.create(None, &quot;test&quot;, &quot;Tk&quot;, 0, 1, 0)<br>try:<br>&nbsp;&nbsp;&nbsp; tk.loadtk()<br>except:<br>&nbsp;&nbsp;&nbsp; pass
<br>tk.loadtk()<br><br>In either case, the second loadtk never finishes.<br><br>It seems that, on my platform at least, Tk_Init() doesn't like being called twice even when the first call resulted in an error. That's Tcl and Tk 
8.4.12. Tkapp_Init() (which is the Tkinter part that calls Tk_Init()) does its best to guard against calling Tk_Init() twice when the first call was succesful, but it doesn't remember failure cases. I don't know enough about Tcl/Tk or Tkinter how this is best handled, but it would be mightily convenient if it were. ;-) I've created a bugreport on it, and I hope someone with Tkinter knowledge can step in and fix it. (It looks like SF auto-assigned it to Martin already, hmm.)
<br><br><a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1475162&amp;group_id=5470&amp;atid=105470">http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1475162&amp;group_id=5470&amp;atid=105470
</a><br><br>-- <br>Thomas Wouters &lt;<a href="mailto:thomas@python.org">thomas@python.org</a>&gt;<br><br>Hi! I'm a .signature virus! copy me into your .signature file to help me spread!