Сегодня я покажу как с помощью PyQt4.QtWebKit можно сделать скриншот без использования браузеров и непосредственного скриншотинга их .
Данный скрипт на безиксовых unixlike os не проверялся, но думаю особых проблем возникнуть не должно.
#coding:utf-8 #Author: RusheR #Site: http://klipner.ru from PyQt4.QtGui import * from PyQt4.QtCore import * from PyQt4.QtWebKit import * import signal,sys class Snapshot(): def __init__(self): # Создаём обьект для рендеринга и закачки web страниц self.webpage = QWebPage() # Создаём сигнал со слотом для сохранения скриншота # Как только загрузка будет завершена, будет вызван метод save. self.webpage.connect(self.webpage, SIGNAL("loadFinished(bool)"), self.save) def save(self,result): if not result: sys.exit() # Получаем размер загруженной странички size = self.webpage.mainFrame().contentsSize() # Меняем размер виртуального окна просмотра self.webpage.setViewportSize(size) # Создаём картинку image = QImage(self.webpage.viewportSize(), QImage.Format_ARGB32) # Виртуальный девайс для рендеринга веб странички painter = QPainter(image) # Рендерим в виртуальный девайс self.webpage.mainFrame().render(painter) painter.end() # Сохраняем image.save('output.png') # Закрываем приложение sys.exit() def load(self,url): self.webpage.mainFrame().load(QUrl(url)) app = QApplication([]) signal.signal(signal.SIGINT, signal.SIG_DFL) s = Snapshot() s.load('http://klipner.ru') sys.exit(app.exec_())