From: Ryan N. <rne...@gm...> - 2015-02-18 23:58:51
|
Hello list, A couple months ago, I spent quite a bit of time trying to figure out how to use Qt designer create a GUI with an embedded MPL window. Unfortunately, the Scipy cookbook page ( http://wiki.scipy.org/Cookbook/Matplotlib/Qt_with_IPython_and_Designer) is very outdated. A recent post ( http://matplotlib.1069221.n5.nabble.com/Re-Keep-list-of-figures-or-plots-and-flip-through-list-using-UI-td44961.html) brought up some questions about a use case very similar to mine, so I redid my example and was going to write a quick tutorial for the docs. Unfortunately, I'm not a Qt guru, so I thought that I would ask on the list for some advice. The OP and I were both interested in being able to have a list of figures that you could select from to change the plot window. The embedding examples in the docs create subclasses of FigureClass* and embed the plotting figure/axes/etc. This works but gets tricky, though, when trying to switch plots. Also, for interactive IPython work, I didn't like that the plotting objects were mixed in with all the QtGui.QWidget attributes, which makes introspective searching painful. My solution was to create a dictionary of matplotlib.figure.Figure objects that had all of the plotting stuff defined. Then when I select a new plot from the list, the old one is removed and a new FigureClass object is created using the selected Figure object. Has anyone else successfully done something like this? Is there a better way? Also, it seems if I zoom the current plot, change to a new plot, and change back, the zoom region is retained. Anyone know how to reset the zoom region? Attached is my example: "window.py" is the Designer-created main window and "custommpl.py" is the subclass of the main window that I wrote. It's about as short as I could make it. Thanks Ryan |