[pygtk] advice needed
Michael Hohn
mhhohn at lbl.gov
Thu Dec 21 03:39:32 WST 2006
Gabriel wrote:
> Thanks; yes I use matplotlib for a lot of other things. But in this
> case I am not sure it is the best way to go. I have a huge pytables
> repository of relatively small and already calculated spectrograms
> (say 128x30 pixels) that I need to display, page after page. One
> screen can contain hundreds of them, so they need to be loaded
> relatively fast.
>
> The thing is that I am new to pygtk (and gnome) and after reading
> various posts and articles, I am a bit confused about what the most
> straightforward way is to display many relatively small bitmaps on a
> canvas.
>
> All best, Gabriel
>
I'm using the CanvasPixbuf to display Numeric array data; I've only
tried it for smaller numbers of images (~ 25), so I don't know how
well it will perform for larger counts. A CanvasPixbuf will scale
with the rest of the canvas when using .set_pixels_per_unit(), so this
makes zooming convenient.
The relevant snippet follows; `canvas` is the gnome canvas module.
Good luck,
Michael
import Numeric as N
pix_arr = N.array(t4, 'b')
#
#*** Get the pixbuf.
# array input indexing is row, pixel, [r,g,b {,a} ]
pixbuf = gtk.gdk.pixbuf_new_from_array(pix_arr,
gtk.gdk.COLORSPACE_RGB, 8)
#
#*** display pixbuf as item
d_canv = < your canvas here >
d_rt = d_canv.root().add(canvas.CanvasGroup)
d_rt.add(canvas.CanvasPixbuf,
x = 20, # world units
y = 20,
height_set = True,
width_set = True,
width = 15, # world units
height = 15,
pixbuf = pixbuf,
)
More information about the pygtk
mailing list