在这些情况下,从 Gtk 本身而不是 PyGtk 中阅读文档会很有用,因为它们更完整。
在这种情况下,相关函数是gtk_image_set_from_pixmap()
和gtk_image_get_pixbuf()
:
获取 GtkImage 正在显示的 GdkPixbuf。图片的存储类型必须为 GTK_IMAGE_EMPTY 或 GTK_IMAGE_PIXBUF。
问题是GtkImage
小部件可以同时保存 a GdkPixbuf
, a GdkPixmap
, a GdkImage
... 但它不能在它们之间转换,也就是说,您只能恢复您存储的内容。
您正在存储一个像素图并尝试获取一个像素缓冲区,但这是行不通的。现在,解决方案是什么?这取决于你想要做什么。如果您使用gtk.pixbuf.get_from_drawable()将其转换为 pixbuf 可能就足够了:
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')