[IPython-dev] Detecting GUI mainloop running in IPython

Gael Varoquaux gael.varoquaux at normalesup.org
Sun Jul 25 16:56:07 EDT 2010


On Sun, Jul 25, 2010 at 10:35:02AM -1000, Eric Firing wrote:
> Although ipython has provided invaluable service to mpl by enabling 
> interactive plotting for all gui backends, I am not at all sure that 
> this functionality should be left to ipython in the long run.  The 
> problem is that mpl is used in a variety of ways and environments.  Gui 
> functionality is central to mpl; it seems odd, and unnecessarily 
> complicated, to have to delegate part of that to an environment, or 
> shell, like ipython.

Wow, I just did a little experiment, and I really don't understand the
outcome. Please bear with me:

$ ipython

In [1]: !cat /home/varoquau/.matplotlib/matplotlibrc
backend     : GtkAgg 

In [2]: from pylab import *

In [3]: ion()

In [4]: plot([1,2,3])
Out[4]: [<matplotlib.lines.Line2D object at 0xccb4dac>]

In [5]: from enthought.mayavi import mlab

In [6]: mlab.test_surf()
Out[6]: <enthought.mayavi.modules.surface.Surface object at 0xd58ce0c>

Two things I do not understand:

    1) I can interact alright with the Mayavi plot, nice and fine
       eventhough there is not wx event-loop running, and I did not
       register a InputHook

    2) I did not get a segfault, while I am running at the same time GTK
       and Wx. This used to be a big no no.

I believe that 1 is due to matplotlib registering an InputHook, but I
cannot find where it is done. Also, does this seems to mean that under
Linux GTK input hooks work for Wx (and they are nicer since they don't
poll).

Anyhow, this is good news, eventhough I don't understand it at all.

Gaël



More information about the IPython-dev mailing list