On Fri, 9 Jul 2010 19:37:56 -0500
John Hunter <jdh2...@gmail.com> wrote:

> On Fri, Jul 9, 2010 at 3:10 PM, Preben Randhol <rand...@pvv.org>
> wrote:
> 
> > I'm trying to plot several subplots. I have setup a scrollwidget and
> > viewport and I pack a canvas into a vbox in the viewport.
> >
> > Problem is that when I scroll, either some of the subplots are
> > missing, or I get an error when I try to zoom on a graph that
> > argument is not a gdk.gtk.image (or something like that) but None.
> >
> > I thought this was fixed in 1.0, but it isn't
> >
> > Please advice!
> 
> Does this example work for you?
> 
>   
> http://matplotlib.sourceforge.net/examples/user_interfaces/embedding_in_gtk3.html


Yes it works and a bit cleanup of my imports helped in my program too.
However if I add NavigateToolbar to the example above I get problems.

mtoolbar = NavigationToolbar(canvas, win)

then I get error when I try to zoom in a graph:

/usr/lib/pymodules/python2.6/matplotlib/backends/backend_gtk.py:621:
DeprecationWarning: Use the new widget gtk.Tooltip self.tooltips =
gtk.Tooltips() 
/usr/lib/pymodules/python2.6/matplotlib/backends/backend_gtk.py:601:
GtkWarning: gdk_drawable_copy_to_image: assertion `src_y >= 0' failed
self._imageBack = axrect, drawable.get_image(*axrect) Traceback (most
recent call last): File
"/usr/lib/pymodules/python2.6/matplotlib/backends/backend_gtk.py", line
606, in idle_draw drawable.draw_image(gc, imageBack, 0, 0, *lastrect)
TypeError: Gdk.Drawable.draw_image() argument 2 must be gtk.gdk.Image,
not None

The graph zooms, but I don't see the rubberband. I got same
error in 1.0:
 
TypeError: Gdk.Drawable.draw_image() argument 2 must be gtk.gdk.Image,
not None


> It uses a ScrolledWindow.
> 
> Also, are you using backend_gtk or backend_gtkagg (and does it matter
> for your problem?)

I use GTKAgg and it works. GTK doesn't.

> 
> If you could create a minimal example starting with
> embedding_in_gtk3.py that replicates your problem, we're more likely
> to be able to help.

I have added the example above with my changes. Zooming is the problem.


#!/usr/bin/env python
"""
demonstrate adding a FigureCanvasGTK/GTKAgg widget to a gtk.ScrolledWindow
"""

import gtk

from matplotlib.figure import Figure
from numpy import arange, sin, pi

# uncomment to select /GTK/GTKAgg/GTKCairo
#from matplotlib.backends.backend_gtk import FigureCanvasGTK as FigureCanvas
from matplotlib.backends.backend_gtkagg import FigureCanvasGTKAgg as FigureCanvas
#from matplotlib.backends.backend_gtkcairo import FigureCanvasGTKCairo as FigureCanvas
from matplotlib.backends.backend_gtkagg import NavigationToolbar2GTKAgg as NavigationToolbar


win = gtk.Window()
win.connect("destroy", lambda x: gtk.main_quit())
win.set_default_size(400,300)
win.set_title("Embedding in GTK")

f = Figure(figsize=(5,4), dpi=100)
a = f.add_subplot(511)
t = arange(0.0,3.0,0.01)
s = sin(2*pi*t)
a.plot(t,s)
a = f.add_subplot(512)
t = arange(0.0,3.0,0.01)
s = sin(2*pi*t)
a.plot(t,s)

a = f.add_subplot(513)
t = arange(0.0,3.0,0.01)
s = sin(2*pi*t)
a.plot(t,s)
a = f.add_subplot(514)
t = arange(0.0,3.0,0.01)
s = sin(2*pi*t)
a.plot(t,s)
a = f.add_subplot(515)
t = arange(0.0,3.0,0.01)
s = sin(2*pi*t)
a.plot(t,s)
sw = gtk.ScrolledWindow()


cx=gtk.VBox()
win.add (cx)
cx.pack_start(sw)
# A scrolled window border goes outside the scrollbars and viewport
sw.set_border_width (10)
# policy: ALWAYS, AUTOMATIC, NEVER
sw.set_policy (hscrollbar_policy=gtk.POLICY_NEVER,
               vscrollbar_policy=gtk.POLICY_ALWAYS)

canvas = FigureCanvas(f)  # a gtk.DrawingArea
canvas.set_size_request(800,3000)
bx=gtk.VBox()
mtoolbar = NavigationToolbar(canvas, win)
cx.pack_start(mtoolbar,False,False)

sw.add_with_viewport (bx)
bx.pack_start(canvas,True, True)

win.show_all()
gtk.main()
------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to