Trong những trường hợp này, bạn nên đọc tài liệu từ chính Gtk, thay vì PyGtk, vì chúng hoàn chỉnh hơn.
Trong trường hợp này các chức năng có liên quan gtk_image_set_from_pixmap()
và 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.
Vấn đề là widget GtkImage
có thể chứa cả một GdkPixbuf
, một GdkPixmap
, một GdkImage
... nhưng nó không thể chuyển đổi giữa chúng, nghĩa là, bạn chỉ có thể khôi phục những gì bạn đã lưu trữ.
Bạn đang lưu trữ một bản đồ pixmap và cố gắng để có được một pixbuf, và điều đó sẽ không hoạt động. Bây giờ, giải pháp là gì? Điều đó phụ thuộc vào những gì bạn đang cố gắng làm chính xác. Có lẽ nó là đủ nếu bạn chuyển đổi nó thành một pixbuf với 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')