Checking if figure is on screen

Hi,

I am writting an application in which I update dynamically the state of the figures. When I am done I call the Figure.canvas.draw function to redraw the figure. However, when the window was previously closed by the user the update can be skipped.

Is there a way to tell from a figure handle if the figure is shown on screen or not?

Currently, I solve this problem with a callback which sets the figure handle to None on figure close event. However, I guess there might be a more direct way of doing that. What would you suggest?

Thanks a lot for your help.

Bartosz

Bartosz Telenczuk, on 2011-02-13 23:16, wrote:

Hi,

I am writting an application in which I update dynamically the state
of the figures. When I am done I call the Figure.canvas.draw function
to redraw the figure. However, when the window was previously closed
by the user the update can be skipped.

Is there a way to tell from a figure handle if the figure is shown on
screen or not?

Currently, I solve this problem with a callback which sets the figure
handle to None on figure close event. However, I guess there might be
a more direct way of doing that. What would you suggest?

Thanks a lot for your help.

Hi Bartosz,

I don't think there's currently a backend independent way of
doing it outside of the approach you have taken.

Having a quick look using f = plt.gcf() before and after closing
the figure, with a WX backend, the f.canvas object changes
to an instance of <class 'wx._core._wxPyDeadObject'>, and loses
all of its usual methods. For GTK - looks like f.canvas.window
gets set to None.

So if you're only targeting one backend, there might be some
simple way like this to find out if a figure is being shown using
from the figure handle.

best,

ยทยทยท

--
Paul Ivanov
314 address only used for lists, off-list direct email at:
http://pirsquared.org | GPG/PGP key id: 0x0F3E28F7