[osgeo4w-dev] [osgeo4w] #213: Qt4Agg backend broken in matplotlib
OSGeo4W
trac_osgeo4w at osgeo.org
Mon Feb 28 05:54:17 EST 2011
#213: Qt4Agg backend broken in matplotlib
---------------------+------------------------------------------------------
Reporter: goyodiaz | Owner: osgeo4w-dev@…
Type: defect | Status: new
Priority: major | Component: Package
Version: | Keywords:
---------------------+------------------------------------------------------
{{{
D:\>python
Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit
(Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib as mpl
>>> mpl.use('Qt4Agg')
>>> import matplotlib.pyplot as plt
>>> plt.plot([1, 2])
[<matplotlib.lines.Line2D object at 0x0180FB90>]
>>> plt.show()
Traceback (most recent call last):
File "D:\OSGeo4w\apps\Python25\lib\site-
packages\matplotlib\backends\backend_q
t4.py", line 168, in resizeEvent
self.draw()
File "D:\OSGeo4w\apps\Python25\lib\site-
packages\matplotlib\backends\backend_q
t4agg.py", line 130, in draw
FigureCanvasAgg.draw(self)
File "D:\OSGeo4w\apps\Python25\lib\site-
packages\matplotlib\backends\backend_a
gg.py", line 313, in draw
self.renderer = self.get_renderer()
File "D:\OSGeo4w\apps\Python25\lib\site-
packages\matplotlib\backends\backend_a
gg.py", line 319, in get_renderer
try: self._lastKey, self.renderer
TypeError: 'sip.methoddescriptor' object is not callable
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\OSGeo4w\apps\Python25\lib\site-
packages\matplotlib\backends\backend_q
t4.py", line 69, in show
figManager.canvas.draw()
File "D:\OSGeo4w\apps\Python25\lib\site-
packages\matplotlib\backends\backend_q
t4agg.py", line 130, in draw
FigureCanvasAgg.draw(self)
File "D:\OSGeo4w\apps\Python25\lib\site-
packages\matplotlib\backends\backend_a
gg.py", line 313, in draw
self.renderer = self.get_renderer()
File "D:\OSGeo4w\apps\Python25\lib\site-
packages\matplotlib\backends\backend_a
gg.py", line 319, in get_renderer
try: self._lastKey, self.renderer
TypeError: 'sip.methoddescriptor' object is not callable
>>> Traceback (most recent call last):
File "D:\OSGeo4w\apps\Python25\lib\site-
packages\matplotlib\backends\backend_q
t4agg.py", line 83, in paintEvent
FigureCanvasAgg.draw(self)
File "D:\OSGeo4w\apps\Python25\lib\site-
packages\matplotlib\backends\backend_a
gg.py", line 313, in draw
self.renderer = self.get_renderer()
File "D:\OSGeo4w\apps\Python25\lib\site-
packages\matplotlib\backends\backend_a
gg.py", line 319, in get_renderer
try: self._lastKey, self.renderer
TypeError: 'sip.methoddescriptor' object is not callable
}}}
The offending line is testing for attributes existence. The next line
catches AttributeError but now a TypeError is raised. Catching TypeError
in line 320 seems to solve this.
Before:
{{{
try: self._lastKey, self.renderer
except AttributeError: need_new_renderer = True
else: need_new_renderer = (self._lastKey != key)
}}}
After
{{{
try: self._lastKey, self.renderer
except (AttributeError, TypeError): need_new_renderer = True
else: need_new_renderer = (self._lastKey != key)
}}}
--
Ticket URL: <http://trac.osgeo.org/osgeo4w/ticket/213>
OSGeo4W <http://trac.osgeo.org/osgeo4w>
OSGeo4W is the Windows installer for the OSGeo stack.
More information about the osgeo4w-dev
mailing list