Blitting with qt4

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:

···

###
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

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 <efiring@...202...>

     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:
     [Matplotlib-users] QT draw issue in 1.1.0 and PyQt4v2 missing? | matplotlib

Eric

···

On 12/14/2011 12:31 PM, David Hoese wrote:
Date: Tue Oct 18 08:06:21 2011 -1000

###
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
matplotlib-users List Signup and Options