On 12/14/2011 12:31 PM, David Hoese wrote:
> Does anyone know if using the blit method from FigureCanvasQTAgg is not
> fully supported?  I'm having a problem where I'm animating a plot using
> the blit method and I click on/activate the window the background of the
> figure disappears (axes and line stay visible).  I'm not sure if this is
> just me (Mac OS X Lion, Qt4 4.8.6, Matplotlib 1.1.0), but the following
> code reproduces the error:
>

David,

It works for me on linux with mpl from git.  I haven't tried to figure 
it out, but it is conceivable that the problem you are seeing was fixed 
with this:

commit b624546ae60dc5878e75a32f41a160d383548b8f
Author: Eric Firing <efir...@hawaii.edu>
Date:   Tue Oct 18 08:06:21 2011 -1000

     backend_qt4agg: draw() immediately calls FigureCanvasAgg.draw()

     This is the latest in a series of modifications to the Qt4Agg
     drawing strategy going back several years.  It simplifies the
     code and should solve the problem introduced in 6938b0025; that
     is, delaying the Agg draw operation until the paintEvent breaks
     code expecting that draw operation to have occurred immediately.
     The problem was reported here:
     http://sourceforge.net/mailarchive/message.php?msg_id=28245744

Eric

> ###
> from PyQt4 import QtGui,QtCore
> from matplotlib.figure import Figure
> from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg
> from time import sleep
>
> app = QtGui.QApplication([" "])
> f = Figure()
> c = FigureCanvasQTAgg(f)
> a = f.add_subplot(111)
> a.set_title("A Title")
> bbox = c.copy_from_bbox(a.bbox)
> lines = a.plot([1,2,3],[1,2,3])
> c.draw()
> c.show()
>
> wait = raw_input("Press a key to continue...")
>
> def update(i):
>       a.lines[0].set_ydata([i,1,i])
>       print a.bbox.bounds
>       c.restore_region(bbox, bbox=a.bbox)
>       a.draw_artist(a.lines[0])
>       c.blit(a.bbox)
>
>       sleep(1)
>       app.processEvents()
>
> for i in range(20):
>       update(i)
>
> wait = raw_input("Press a key to continue...")
> ###
>
> To see the problem, run the code, watch the plot to make sure its
> updating properly, then click on the window  to put it in focus/activate
> it.  I'm hoping that I'm just doing something stupid and its an easy
> fix.  It seems to work until I click on the window (in Mac OS X Lion
> Terminal the window is opened in the background and the Terminal window
> stays in focus).  Thanks for any help.
>
> -Dave
>
>
> ------------------------------------------------------------------------------
> Cloud Computing - Latest Buzzword or a Glimpse of the Future?
> This paper surveys cloud computing today: What are the benefits?
> Why are businesses embracing it? What are its payoffs and pitfalls?
> http://www.accelacomm.com/jaw/sdnl/114/51425149/
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users


------------------------------------------------------------------------------
Cloud Computing - Latest Buzzword or a Glimpse of the Future?
This paper surveys cloud computing today: What are the benefits? 
Why are businesses embracing it? What are its payoffs and pitfalls?
http://www.accelacomm.com/jaw/sdnl/114/51425149/
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to