2015-03-15 22 views

Antwort

10

Von der documentation,

The get_pixbuf() method gets the gtk.gdk.Pixbuf being displayed by the gtk.Image . The return value may be None if no image data is set. If the storage type of the image is not either gtk.IMAGE_EMPTY or gtk.IMAGE_PIXBUF the ValueError exception will be raised.

(Hervorhebung von mir)

Wie Sie eine png Datei benötigen, können Sie folgen Sie den Anweisungen von here

pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,has_alpha=False, bits_per_sample=8, width=width, height=height) 
pixbuf.get_from_drawable(disp.pixmap, disp.pixmap.get_colormap(), 0, 0, 0, 0, width, height) 
pixbuf.save('path.png') 

Dies wird eine pixbuf von Ihrem pixmap zu schaffen, die disp.pixmap ist. Dies kann später mit pixbuf.save

3

Während die Antwort abzuwarten Objekt Ich fand die Lösung

pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, width, height) 
pixbf = pixbuf.get_from_drawable(disp.pixmap, disp.pixmap.get_colormap(), 0, 0, 0, 0, width, height) 
pixbf.save('path.png') 

vorausgesetzt disp.pixmap ist Ihr pixmap

4

gespeichert werden. In diesen Fällen ist es nützlich, die Dokumentation von Gtk selbst zu lesen, anstelle von PyGtk, da sie vollständiger sind.

In diesem Fall werden die entsprechenden Funktionen sind gtk_image_set_from_pixmap() und 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.

Das Problem ist, dass das GtkImage Widget halten kann sowohl ein GdkPixbuf, ein GdkPixmap, ein GdkImage ... aber es zwischen ihnen nicht konvertieren kann, Das heißt, Sie können nur wiederherstellen, was Sie gespeichert haben.

Sie speichern eine Pixmap und versuchen, einen Pixbuf zu bekommen, und das wird nicht funktionieren. Nun, was ist die Lösung? Das hängt davon ab, was Sie genau machen wollen. Wahrscheinlich ist es genug, wenn Sie es in einen Pixbuf mit gtk.pixbuf.get_from_drawable() konvertieren:

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')