В этих случаях полезно прочитать документацию непосредственно из самой Gtk, а не PyGtk, поскольку они более полные.
В этом случае соответствующие функции gtk_image_set_from_pixmap()
и 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.
Проблема заключается в том, что GtkImage
виджет может содержать одновременно GdkPixbuf
, GdkPixmap
, GdkImage
... но она не может конвертировать между ними, то есть вы можете восстановить только то, что вы сохранили.
Вы храните pixmap и пытаетесь получить pixbuf, и это не сработает. Теперь, каково решение? Это зависит от того, что вы пытаетесь сделать точно. Вероятно, этого достаточно, если вы преобразовали его в pixbuf с 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')