--- a/WebBrowser/SpeedDial/PageThumbnailer.py Sat Apr 30 20:01:30 2016 +0200 +++ b/WebBrowser/SpeedDial/PageThumbnailer.py Sun May 01 16:41:08 2016 +0200 @@ -9,10 +9,9 @@ from __future__ import unicode_literals -from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject, QSize, Qt, QUrl, \ - QTimer -from PyQt5.QtGui import QPixmap -from PyQt5.QtQuickWidgets import QQuickWidget +from PyQt5.QtCore import pyqtSignal, QObject, QSize, Qt, QUrl, QTimer +from PyQt5.QtGui import QPixmap, QImage, QPainter +from PyQt5.QtWebEngineWidgets import QWebEngineView class PageThumbnailer(QObject): @@ -37,10 +36,9 @@ self.__title = "" self.__url = QUrl() - self.__view = QQuickWidget() + self.__view = QWebEngineView() self.__view.setAttribute(Qt.WA_DontShowOnScreen) - self.__view.setSource(QUrl("qrc:qml/thumbnailer.qml")) - self.__view.rootContext().setContextProperty("thumbnailer", self) + self.__view.resize(1920, 1080) self.__view.show() def setSize(self, size): @@ -104,15 +102,12 @@ """ Public method to start the thumbnailing action. """ - if self.__view.rootObject(): - self.__view.rootObject().setProperty("url", self.__url) - else: - QTimer.singleShot(0, lambda: self.thumbnailCreated.emit(QPixmap())) + self.__view.loadFinished.connect(self.__createThumbnail) + self.__view.load(self.__url) - @pyqtSlot(bool) - def createThumbnail(self, status): + def __createThumbnail(self, status): """ - Public slot creating the thumbnail of the web site. + Private slot creating the thumbnail of the web site. @param status flag indicating a successful load of the web site (boolean) @@ -127,9 +122,15 @@ """ Private slot to grab the thumbnail image from the view. """ - self.__title = self.__view.rootObject().property("title") - pixmap = QPixmap.fromImage( - self.__view.grabFramebuffer().scaled( - self.__size, Qt.KeepAspectRatioByExpanding, - Qt.SmoothTransformation)) - self.thumbnailCreated.emit(pixmap) + self.__title = self.__view.title() + + image = QImage(self.__view.size(), QImage.Format_ARGB32) + painter = QPainter(image) + self.__view.render(painter) + painter.end() + + scaledImage = image.scaled(self.__size, + Qt.KeepAspectRatioByExpanding, + Qt.SmoothTransformation) + + self.thumbnailCreated.emit(QPixmap.fromImage(scaledImage))