mnr*_*nrl 5 python import pygtk gdk
我有这个需要x屏幕截图的python代码。
#!/usr/bin/python
import gtk.gdk
w = gtk.gdk.get_default_root_window()
sz = w.get_size()
print "The size of the window is %d x %d" % sz
pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,sz[0],sz[1])
pb = pb.get_from_drawable(w,w.get_colormap(),0,0,0,0,sz[0],sz[1])
if (pb != None):
pb.save("screenshot.png","png")
print "Screenshot saved to screenshot.png."
else:
print "Unable to get the screenshot."
Run Code Online (Sandbox Code Playgroud)
它有效,但是我需要导入from gi.repository import Gdkgtk.gdk。我尝试了以下方法:
#!/usr/bin/python
from gi.repository import Gtk, Gdk, GdkPixbuf
from gi.repository.GdkPixbuf import Pixbuf
w = Gdk.get_default_root_window()
sz = w.get_size()
print "The size of the window is %d x %d" % sz
pb = Pixbuf(Gdk.COLORSPACE_RGB,False,8,sz[0],sz[1])
pb = pb.get_from_drawable(w,w.get_colormap(),0,0,0,0,sz[0],sz[1])
if (pb != None):
pb.save("screenshot.png","png")
print "Screenshot saved to screenshot.png."
else:
print "Unable to get the screenshot."
Run Code Online (Sandbox Code Playgroud)
但:
Traceback (most recent call last):
File "./dsd", line 6, in <module>
sz = w.get_size()
AttributeError: 'gtk.gdk.X11Window' object has no attribute 'get_size'
Run Code Online (Sandbox Code Playgroud)
有没有办法为该脚本完全使用gi.repository?谢谢
编辑:我解决了AttributeError的问题:'gtk.gdk.X11Window'对象使用sz = w.get_geometry()而不是get_size没有属性'get_size'。新代码:
#!/usr/bin/python
from gi.repository import Gtk, Gdk, GdkPixbuf
from gi.repository.GdkPixbuf import Pixbuf
w = Gdk.get_default_root_window()
sz = w.get_geometry()
#print "The size of the window is %d x %d" % sz
pb = GdkPixbuf.Pixbuf.new(GdkPixbuf.Colorspace.RGB,False,8,sz[2],sz[3])
pb = pb.get_from_drawable(w,w.get_colormap(),0,0,0,0,sz[2],sz[3])
if (pb != None):
pb.save("screenshot.png","png")
print "Screenshot saved to screenshot.png."
else:
print "Unable to get the screenshot."
Run Code Online (Sandbox Code Playgroud)
但是此代码还有另一个问题:
Traceback (most recent call last):
File "./dsd", line 9, in <module>
pb = pb.get_from_drawable(w,w.get_colormap(),0,0,0,0,sz[2],sz[3])
AttributeError: 'Pixbuf' object has no attribute 'get_from_drawable'
Run Code Online (Sandbox Code Playgroud)
如何使用Pixbuf的“ get_from_drawable”属性?再次感谢!
我知道这个答案来得有点晚,但迟到总比不到好。
Gdk3+实际上简化了Pixbuf从GdkWindow. 因此,您的代码应如下所示:
#!/usr/bin/python
from gi.repository import Gdk, GdkPixbuf
w = Gdk.get_default_root_window()
sz = w.get_geometry()[2:4]
#print "The size of the window is %d x %d" % sz
pb = Gdk.pixbuf_get_from_window(w, 0, 0, sz[0], sz[1])
if (pb != None):
pb.savev("screenshot.png","png", [], [])
print "Screenshot saved to screenshot.png."
else:
print "Unable to get the screenshot."
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4785 次 |
| 最近记录: |