warnings, bugs with GTK backends

Hello all,

I just upgraded my matplotlib and gtk distributions because I thought I'd try the GTK3Agg backend (I had been using the GTKAgg backend).

I'm using macports for the supporting libraries with git repositories for ipython and matplotlib (today's master [0b8481977016e8f], but I seem to have the same issues with tag v1.3.x)

Before installing matplotlib, I did a make clean and then removed everything from the build/ directory, and matplotlib* from
python2.7/site-packages/

The following ports are currently installed:
   gtk2 @2.24.17_1+x11 (active)
   gtk3 @3.10.0_0+x11 (active)
   py27-gobject3 @3.8.3_0 (active)
   py27-gobject @2.28.6_0 (active)

If I use the GTKAgg backend I get these warnings (which I did not get before).

···

===
Using matplotlib backend: GTKAgg

In [1]: x = arange(0,10,0.1)

In [2]: plot(x,sin(x))
/Users/mcj/lib/python2.7/site-packages/matplotlib-1.4.x-py2.7-macosx-10.8-x86_64.egg/matplotlib/backends/backend_gtk.py:651: Warning: Attempt to add property GtkSettings::gtk-label-select-on-focus after class was initialised
   gtk.Toolbar.__init__(self)
/Users/mcj/lib/python2.7/site-packages/matplotlib-1.4.x-py2.7-macosx-10.8-x86_64.egg/matplotlib/backends/backend_gtk.py:651: Warning: Attempt to add property GtkSettings::gtk-button-images after class was initialised
   gtk.Toolbar.__init__(self)
Out[2]: [<matplotlib.lines.Line2D at 0x11025e250>]

Otherwise everything else seems ok.

If I use the GTK3Agg backend, I get no plot window when I do a show(), and when I attempt to exit ipython, I get these errors:

===
object? -> Details about 'object', use 'object??' for extra details.
Using matplotlib backend: GTK3Agg

In [1]: x = arange(0,10,0.1)

In [2]: plot(x,sin(x))
Out[2]: [<matplotlib.lines.Line2D at 0x10957d450>]

In [3]: show()

In [4]:
Do you really want to exit ([y]/n)?
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
   File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/atexit.py", line 24, in _run_exitfuncs
     func(*targs, **kargs)
   File "/Users/mcj/lib/python2.7/site-packages/matplotlib-1.4.x-py2.7-macosx-10.8-x86_64.egg/matplotlib/_pylab_helpers.py", line 89, in destroy_all
     manager.destroy()
   File "/Users/mcj/lib/python2.7/site-packages/matplotlib-1.4.x-py2.7-macosx-10.8-x86_64.egg/matplotlib/backends/backend_gtk3.py", line 433, in destroy
     self.canvas.destroy()
AttributeError: FigureManagerGTK3Agg instance has no attribute 'canvas'
Error in sys.exitfunc:
Traceback (most recent call last):
   File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/atexit.py", line 24, in _run_exitfuncs
     func(*targs, **kargs)
   File "/Users/mcj/lib/python2.7/site-packages/matplotlib-1.4.x-py2.7-macosx-10.8-x86_64.egg/matplotlib/_pylab_helpers.py", line 89, in destroy_all
     manager.destroy()
   File "/Users/mcj/lib/python2.7/site-packages/matplotlib-1.4.x-py2.7-macosx-10.8-x86_64.egg/matplotlib/backends/backend_gtk3.py", line 433, in destroy
     self.canvas.destroy()
AttributeError: FigureManagerGTK3Agg instance has no attribute 'canvas'

Anyone have a clue?

M

Hello

I don't know why it is failing with the macports... not much help
about that from me :wink:

If I make it fail on pourpuse, for example adding and unwanted int
third argument in the plot call

import matplotlib
matplotlib.use('gtk3agg')
from numpy import *
from matplotlib.pyplot import *
x = arange(0,10,0.1)
plot(x, sin(x), 0)
show()

The method FigureManagerGTK3.destroy() is being called twice, and
because it calls
self.__dict__.clear()
the second time it is called, it does not find any attribute, and that
is the reason for the UGLY message that hides the real problem. In my
example it is hiding the
ValueError: third arg must be a format string

Actually there is a comment on the line asking why is it called there...

In gtkagg there is a bunch of hasattr calls in the destroy method just
to bypass this problem

Is there any reason for the
self.__dict__.clear() ???

Federico

···

On Tue, Oct 1, 2013 at 9:43 AM, Michael Kaufman <kaufmanmc@...1168...> wrote:

Hello all,

I just upgraded my matplotlib and gtk distributions because I thought
I'd try the GTK3Agg backend (I had been using the GTKAgg backend).

I'm using macports for the supporting libraries with git repositories
for ipython and matplotlib (today's master [0b8481977016e8f], but I seem
to have the same issues with tag v1.3.x)

Before installing matplotlib, I did a make clean and then removed
everything from the build/ directory, and matplotlib* from
python2.7/site-packages/

The following ports are currently installed:
   gtk2 @2.24.17_1+x11 (active)
   gtk3 @3.10.0_0+x11 (active)
   py27-gobject3 @3.8.3_0 (active)
   py27-gobject @2.28.6_0 (active)

If I use the GTKAgg backend I get these warnings (which I did not get
before).

===
Using matplotlib backend: GTKAgg

In [1]: x = arange(0,10,0.1)

In [2]: plot(x,sin(x))
/Users/mcj/lib/python2.7/site-packages/matplotlib-1.4.x-py2.7-macosx-10.8-x86_64.egg/matplotlib/backends/backend_gtk.py:651:
Warning: Attempt to add property GtkSettings::gtk-label-select-on-focus
after class was initialised
   gtk.Toolbar.__init__(self)
/Users/mcj/lib/python2.7/site-packages/matplotlib-1.4.x-py2.7-macosx-10.8-x86_64.egg/matplotlib/backends/backend_gtk.py:651:
Warning: Attempt to add property GtkSettings::gtk-button-images after
class was initialised
   gtk.Toolbar.__init__(self)
Out[2]: [<matplotlib.lines.Line2D at 0x11025e250>]

Otherwise everything else seems ok.

If I use the GTK3Agg backend, I get no plot window when I do a show(),
and when I attempt to exit ipython, I get these errors:

===
object? -> Details about 'object', use 'object??' for extra details.
Using matplotlib backend: GTK3Agg

In [1]: x = arange(0,10,0.1)

In [2]: plot(x,sin(x))
Out[2]: [<matplotlib.lines.Line2D at 0x10957d450>]

In [3]: show()

In [4]:
Do you really want to exit ([y]/n)?
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
   File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/atexit.py",
line 24, in _run_exitfuncs
     func(*targs, **kargs)
   File
"/Users/mcj/lib/python2.7/site-packages/matplotlib-1.4.x-py2.7-macosx-10.8-x86_64.egg/matplotlib/_pylab_helpers.py",
line 89, in destroy_all
     manager.destroy()
   File
"/Users/mcj/lib/python2.7/site-packages/matplotlib-1.4.x-py2.7-macosx-10.8-x86_64.egg/matplotlib/backends/backend_gtk3.py",
line 433, in destroy
     self.canvas.destroy()
AttributeError: FigureManagerGTK3Agg instance has no attribute 'canvas'
Error in sys.exitfunc:
Traceback (most recent call last):
   File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/atexit.py",
line 24, in _run_exitfuncs
     func(*targs, **kargs)
   File
"/Users/mcj/lib/python2.7/site-packages/matplotlib-1.4.x-py2.7-macosx-10.8-x86_64.egg/matplotlib/_pylab_helpers.py",
line 89, in destroy_all
     manager.destroy()
   File
"/Users/mcj/lib/python2.7/site-packages/matplotlib-1.4.x-py2.7-macosx-10.8-x86_64.egg/matplotlib/backends/backend_gtk3.py",
line 433, in destroy
     self.canvas.destroy()
AttributeError: FigureManagerGTK3Agg instance has no attribute 'canvas'

Anyone have a clue?

M

------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60134791&iu=/4140/ostg.clktrk
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

--
Y yo que culpa tengo de que ellas se crean todo lo que yo les digo?

-- Antonio Alducin --