O código abaixo funciona perfeitamente quando eu o executo como um aplicativo de console
import gtk.gdk
import time
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])
ts = time.time()
filename = "screenshot"
filename += str(ts)
filename += ".png"
if (pb != None):
pb.save(filename,"png")
print "Screenshot saved to "+filename
else:
print "Unable to get the screenshot."
Mas agora eu quando eu usei em um aplicativo do Ubuntu (usando o rapidamente e glade) ele está me dando mensagens de erro
WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-O1o56xxlHA: Connection refused
/usr/lib/python2.7/dist-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion 'g_type_from_name (name) == 0' failed
import gobject._gobject
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:40: Warning: specified class size for type 'PyGtkGenericCellRenderer' is smaller than the parent type's 'GtkCellRenderer' class size
from gtk import _gtk
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:40: Warning: g_type_get_qdata: assertion 'node != NULL' failed
from gtk import _gtk
Como posso melhorar esse código para trabalhar em aplicativos baseados em GUI
EDITAR
O que eu fiz para mudar o código
from gi.repository import Gdk, GdkX11, Gtk
w = Gdk.get_default_root_window()
geo = w.get_geometry()
pb = GdkPixbuf.Pixbuf.new(GdkPixbuf.Colorspace.RGB,False,8,geo[2],geo[3])
pb = pb.gdk_pixbuf_get_from_window(w,0,0,geo[2],geo[3])
pixbuf = pb.get_from_drawable(w,w.get_colormap(),0,0,0,0,geo[2],geo[3])
pixbuf.save("xdfgxfdgdfxgfdx.png","png")
print "The size of the window is %d x %d" % sz
pix = GdkPixbuf.Pixbuf.gdk_pixbuf_get_from_window(root_window, 0, 0, 500, 500)
pix = GdkPixbuf.gdk_pixbuf_get_from_window(window,0,0,500,500);
ts = time.time()
filename = "screenshot"
filename += str(ts)
filename += ".png"
if (pix != None):
pix.save(filename,"png")
print "Screenshot saved to "+filename
else:
print "Unable to get the screenshot."
Mas ainda está me dando erro
(0, 0, 1366, 768)
<Pixbuf object at 0x2966410 (GdkPixbuf at 0x2e42d90)>
Traceback (most recent call last):
File "/home/srs/projectob-team/projectob_team/SelectmemoDialog.py", line 63, in on_start_clicked
pb = pb.gdk_pixbuf_get_from_window(w,0,0,geo[2],geo[3])
AttributeError: 'Pixbuf' object has no attribute 'gdk_pixbuf_get_from_window'