Как сделать снимок экрана с помощью GdkPixbuf?

Используя PyGTK, я мог сделать снимок экрана с помощью gtk.gdk.pixbuf.get_from_drawable.

Я не могу понять, как это сделать с помощью PyGObject и GdkPixbuf. Я пробовал get_from_drawable и get_from_window, но они не работают в PyGObject.

Заранее спасибо.


person Steve Gricci    schedule 27.01.2013    source источник


Ответы (1)


Используйте Gtk.OffscreenWindow:

offscreen_window = Gtk.OffscreenWindow()
offscreen_window.add(widget_that_needs_screenshotting)
pixbuf = offscreen_window.get_pixbuf()
person ptomato    schedule 27.01.2013
comment
Хм, я хотел сделать снимок экрана выбранной пользователем области, offscreen_window, похоже, не позволяет мне указать x, y, ширину, высоту. - person Steve Gricci; 28.01.2013
comment
Вы не указали это в своем вопросе, но вы всегда можете обрезать pixbuf после того, как сделаете снимок экрана, чтобы добиться этого. - person ptomato; 28.01.2013
comment
Согласен, я не уточнил. Как взять часть экрана для добавления в offscreen_window, когда он занимает виджет? - person Steve Gricci; 28.01.2013
comment
Вы не можете, это занимает только виджет. Но вы все равно можете обрезать pixbuf до нужного размера. Если вам нужно что-то еще, вам придется войти в Xlib. - person ptomato; 28.01.2013