In questi casi è utile leggere la documentazione da Gtk stesso, invece che da PyGtk, poiché sono più completi.
In questo caso le relative funzioni sono gtk_image_set_from_pixmap()
e gtk_image_get_pixbuf()
:
Gets the GdkPixbuf being displayed by the GtkImage. The storage type of the image must be GTK_IMAGE_EMPTY or GTK_IMAGE_PIXBUF.
Il problema è che il widget GtkImage
può contenere sia un GdkPixbuf
, un GdkPixmap
, un GdkImage
... ma non in grado di convertire tra di loro, cioè, puoi solo recuperare ciò che hai archiviato.
Si sta memorizzando una pixmap e cercando di ottenere un pixbuf, e questo non funzionerà. Ora, qual è la soluzione? Dipende da cosa stai cercando di fare esattamente. Probabilmente è sufficiente se lo converti in un pixbuf con gtk.pixbuf.get_from_drawable():
w,h = disp.pixmap.get_size()
pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, w, h)
pb.get_from_drawable(disp.pixmap, disp.pixmap.get_colormap(),
0, 0, 0, 0, width, height)
pb.save('path.png')