<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
<p dir="ltr" style="MARGIN-RIGHT: 0px">########<br>Subject:<br>Re: TraitsUI and ipython<br>From:<br>Robert Kern &lt;<a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:robert.kern@gmail.com">robert.kern@gmail.com
</a>&gt;<br>Date:<br>Sun, 03 Dec 2006 19:03:10 -0600<br>To:<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:ipython-user@scipy.net">ipython-user@scipy.net</a><br><br>Dave wrote:<br>&nbsp;&gt; &gt; I'm just starting to work with the Enthought Traits module which looks
<br>&nbsp;&gt; &gt; to have a very handy basic GUI for setting configuration data in<br>&nbsp;&gt; &gt; scripts and handling bits of persistent data with a trivial level of<br>&nbsp;&gt; &gt; effort. &nbsp;It seems like it would be a great addition to the
<br>&nbsp;&gt; &gt; ipython/pylab/YFE (your favotite editor) setup. &nbsp;However, so far, I<br>&nbsp;&gt; &gt; have not been able to get python and pylab to cooperate on OS X. &nbsp;I'm<br>&nbsp;&gt; &gt; using wxpython in pylab. &nbsp;When I start ipython with -pylab or use
<br>&nbsp;&gt; &gt; ipython -wthread and then run a TraitUI script the GUI window appears<br>&nbsp;&gt; &gt; along with a spinning-disk cursor for several seconds, followed by a<br><span></span>&nbsp;&gt; &gt; python/wxpython crash.<br>
<br>What are you using to bring up the Traits sheet? .configure_traits() is used for<br>when the Traits sheet *is* the application; i.e., it should not be used when a<br>wx.App() has already been created like it is with &quot;ipython -wthread&quot;. Use
<br>.edit_traits() instead. I apologize for the near-indistinguishable names;<br>personally, I'd prefer that .configure_traits() be called<br>.edit_traits_with_new_app().<br><br>This is what I get (Intel OS X, Python 2.5, &quot;ipython -wthread&quot;
<br>svn-mumble-mumble, wxPython 2.6.3.x, enthought bleeding-svn):<br><br>In [1]: from enthought.traits.api import *<br><br>In [2]: class Foo(HasTraits):<br>&nbsp; &nbsp;...: &nbsp; &nbsp; bar = Str<br>&nbsp; &nbsp;...:<br>&nbsp; &nbsp;...:<br><br>In [3]: f = Foo()
<br><br>In [4]: f.edit_traits() &nbsp;# It works!<br>Out[4]: &lt;enthought.traits.ui.ui.UI object at 0x179f2ea0&gt;<br><br>In [5]: f.configure_traits() &nbsp;# It fails!<br>Out[5]: False<br><br>In [6]: zsh: bus error &nbsp;ipython -wthread
</p></blockquote>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>I was using .configure_traits() so that is likely the problem.&nbsp; I'm very new to TraitsUI and I did see the edit_traits() method in the docs but I did not understand that ipython -wthread or-pylab&nbsp;creates&nbsp;the&nbsp;wx.App.&nbsp; Thanks for the tip and example Robert.
</div>
<div>&nbsp;</div>
<div>The solution is helpful but not&nbsp;ideal for me since, if I recall correctly, .edit_traits() does not&nbsp;handle persistant storage.&nbsp; Also I will need to know the GUI context and write my script accordingly.&nbsp; But avoiding this sort of complication is my reason for using TraitsUI since it&nbsp;can (almost)&nbsp;effectively&nbsp;hide the event loop and other GUI details from polluting my simple-minded script code, as well as the minds of future&nbsp;script readers.
</div>
<div>&nbsp;</div>
<div>Ideally I would think .configure_traits()&nbsp; could do it's non-GUI stuff like optional storage and typing, check for a wx.App or other appropriate GUI context, create one if needed, call .edit_traits() to display the widgets, and then update the storage. Temporarily, I migth be able to wrap HasTraits,&nbsp;at least for 
wx.APP checking, to prevent the crash if anyone has a suggestion for where to start.&nbsp; Since it sounds like a TraitsUI issue I follow up on enthought-dev for a longer-term solution.</div>
<div>&nbsp;</div>
<div>In simple terms how does ipython and pylab work together today?&nbsp; If ipyhon -wthread creates an wx.App does pylab check for it first?&nbsp; I'm wondering if the approach would work for TraitsUI or if it's considered a short-term (but very helpful) hack.
</div>
<div>&nbsp;</div>
<div>-- David</div>
<div>&nbsp;</div><br>