Если вы не женаты на идее использования gstreamer, вместо этого вы можете использовать OpenCV. В этом посте приведен отличный пример использования pygame.
Однако вы можете получить pixbuf таким образом (и вам даже не нужен PIL):
def get_picture(self, event, data):
drawable = self.movie_window.window
colormap = drawable.get_colormap()
pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, 0, 8, *drawable.get_size())
pixbuf = pixbuf.get_from_drawable(drawable, colormap, 0,0,0,0, *drawable.get_size())
pixbuf.save(r'somefile.png', 'png')
pixbuf.save(r'somefile.jpeg', 'jpeg')
а затем просто создайте кнопку и привяжите команду к get_picture
.
Конечно, если бы я писал эту программу, я бы на самом деле сначала захватил изображение в Image
, а затем нарисовал его наgtk.DrawingArea
- это позволит вам делать все виды забавных вещей .