第一次调用后,Gdk.pixbuff_get_from_window返回相同的结果

时间:2015-05-31 11:45:10

标签: python python-3.x gtk3 pygobject

我使用python3.4和pygobject 3.14测试linux(ubuntu 15.04)中的以下代码:

from gi.repository import Gdk, GLib, Gtk

def print_screen():
    win = Gdk.get_default_root_window()
    size = (win.get_width(), win.get_height())
    pixbuff = Gdk.pixbuf_get_from_window(win, 0, 0, *size)
    name = 'screen-' + str(GLib.get_current_time()) + '.png'
    pixbuff.savev(name, 'png', [], [])
    return True

def start():
    GLib.timeout_add_seconds(1, print_screen)
    return False

GLib.timeout_add_seconds(5, start)

Gtk.main()

所以等待5秒钟,然后每秒拍摄一次屏幕截图。

问题是,所有截图都是同一张图片。故意添加了5秒的初始​​延迟,它显示屏幕与程序启动时的屏幕不同,因此首先调用接收到正确的缓冲区。现在我希望以后的调用也能获取实际的截图。我怎么能这样做?

该错误不会在Windows 10中重现,并且根据ace,在ubuntu 14.04.2中也没有。我想听听有人使用ubuntu 15.04和gtk + 3.14确认这是我配置中的错误。

我刚刚在ubuntu 15.04 live cd上重现了这一点(预装了所有必需的库)。有没有解决方法呢?

0 个答案:

没有答案