1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
#!/usr/bin/python
import os, sys, gtk, gtkmozembed, PIL.Image
class Take_screenshot:
def __init__(self, parent = None):
self.parent = gtk.Window(gtk.WINDOW_TOPLEVEL)
# Initialize mozembed
self.moz = gtkmozembed.MozEmbed()
self.moz.show()
print self.parent.get_allocation().height # returns 1
#self.moz.set_resize_mode(gtk.RESIZE_PARENT) # tested if this changed something
#self.parent.set_resize_mode(gtk.RESIZE_PARENT) # tested if this changed something
self.parent.add(self.moz)
self.moz.load_url('http://www.google.com')
self.parent.show_all()
# Connect signals
self.moz.connect('net_stop', self.prepare_screenshot)
self.moz.connect('size-request', self.set_size)
self.moz.connect('size-allocate', self.set_size)
def prepare_screenshot(self, data = None): # 'Page loaded'
sys.stdout.flush()
gtk.timeout_add(1000, self.create_screenshot)
#print gtk.Requisition(self.moz).height # Doesn't work (abstract widget => requisition with connect('size-request'))
def set_size(self, width, height):
print 'width: %d height: %d'% (height.width, height.height)
#print height # the height-parameter is a gtkmozembed object
def create_screenshot(self):
(x, y, width, height, depth) = self.moz.window.get_geometry()
pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, width, height)
pixbuf.get_from_drawable(self.moz.window, self.moz.get_colormap(), 0, 0, 0, 0, width, height)
pixbuf.save('screenshot.png', 'png') # 'Write screenshot.png'
gtk.main_quit()
Take_screenshot()
gtk.main()
|