[Pythonmac-SIG] Re: Binary Matplotlib package, working. Need
to keep script running after plotting.
Chris Barker
Chris.Barker at noaa.gov
Mon Mar 7 20:29:41 CET 2005
Louis Pecora wrote:
> BUT. (Users are never satisfied are they/we? :-) ). My ultimate goal
> is to not wait until the end of the script to do the plot, but to be
> able to plot and keep the script running. This can be done either by
> pausing the script (in some way) or by leaving the matplotwindow open
> and continuing with the script.
The problem here is the interaction between the event loops of the
terminal and whatever GUI toolkit matplotlib is using. For instance,
with wx, when you call show(), matpotlib brings up a wx Window, then the
wx Event loop is called, and blocks all control. You might try using
ipython (http://ipython.scipy.org/) a fair bit of work has been put into
making it work well with matplotlib. However, it doesn't sound like what
you want is truly interactive.
If I understand, what you're looking for is a way to write a procedural
script that pops up a dialog box now and again to ask a question, and
creates, shows, and destroys plot windows as it needs to. Have I got
that right?
The problem you're running into is that GUI toolkit use an event-driven
model, rather than a procedural one. Once the event loop is stated, the
script halts there. A few years back I was trying to do that same thing.
I'm not sure why, but I don't feel the need for it anymore. Perhaps it's
because I'm used to wxPython now, and just write a full event driven app
when I need one.
> Clicking the close button on the matplotlib window crashes Python.
hmm. I don't think that should happen.
> I am running from a terminal window for now using Pythonw since I also
> use EasyDialogs.
Here's a trick: EasyDialogs used Carbon (I think). In general, things
get messy when you mix GUI toolkits. I think you're going to need to go
to writing your dialogs in the same toolkit as matplotlib is using. It's
too bad that no one has written a PyObjC back-end for matplotlib, as
that would probably be the best option on OS-X. However, wxPython and/or
Tkinter should work. I'd have to probe the mailing lists, but I think
some one wrote a little code to make it easy to write procedural apps
with using wx dialog boxes, and adding matplotlib to that mix should be
easy from there. I'm interested in helping out if you want to go that route.
> I've played with matplotlibrc setting
> "interactive" to True, but that did nothing.
What that setting does is set the back-end to re-draw whenever you
change something in the plot, rather than waiting for a show() call.
> And I have to say your binary
> and the wxPython binary were trivial to install and get running.
glad to here it, they should be.
-Chris
--
Christopher Barker, Ph.D.
Oceanographer
NOAA/OR&R/HAZMAT (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception
Chris.Barker at noaa.gov
More information about the Pythonmac-SIG
mailing list