我使用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上重现了这一点(预装了所有必需的库)。有没有解决方法呢?