Создание снимка экрана gtk.Window

В целях тестирования и документирования я хотел бы создать снимок экрана объекта gtk.Window. На данный момент я следую базовому образцу pygtk. Пример с моими изменениями выглядит следующим образом:

import gtk

def main():
    button = gtk.Button("Hello")
    scroll_win = gtk.ScrolledWindow()
    scroll_win.add(button)
    win = gtk.Window(gtk.WINDOW_TOPLEVEL)
    win.add(scroll_win)
    win.show_all()

    if win.is_drawable() is not True:
        raise RuntimeError("Not drawable?")

    width, height = win.get_size()
    pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8,
                            width, height)
    screenshot = pixbuf.get_from_drawable(win, win.get_colormap(),
                                          0, 0, 0, 0, width, height)
    screenshot.save('screenshot.png', 'png')

if __name__ == '__main__':
    main()
    gtk.main()

Я получаю ошибку при вызове метода get_from_drawable.

TypeError: Gdk.Pixbuf.get_from_drawable() argument 1 must be gtk.gdk.Drawable, not gtk.Window

Очевидно пример скриншота , который я объединил в базовый пример, использует gtk.gdk.Window, который наследуется от gtk.gdk.Drawable.

Мои вопросы:

  • Есть ли другой способ заставить объект Pixbuf захватить окно?
  • Могу ли я сделать gtk.Window gtk.gdk.Window или найти функциональность gtk.gdk.Window в gtk .Окно?

6
задан Community 23 May 2017 в 11:51
поделиться