def setHtml(self, html, base_url): """ Reimplemented to make sure that when we return, the DOM is ready to use. Based on the local event loop approach described here: http://doc.qt.digia.com/qq/qq27-responsive-guis.html#waitinginalocaleventloop """ event_loop = QtCore.QEventLoop() self._loaded = False def on_load(): self._loaded = True event_loop.quit() self.page().loadFinished.connect(on_load) super(ProxyQWebView, self).setHtml(html, base_url) if not self._loaded: event_loop.exec_()
def setUrl(self, url): """ Reimplemented to make sure that when we return, the DOM is ready to use. Based on the local event loop approach described here: http://doc.qt.digia.com/qq/qq27-responsive-guis.html#waitinginalocaleventloop """ event_loop = QtCore.QEventLoop() page = self._page loaded = [False] def on_load(ok): loaded[0] = True event_loop.quit() page.loadFinished.connect(on_load) try: super(ProxyQWebView, self).setUrl(QtCore.QUrl(url)) if not loaded[0]: event_loop.exec_() finally: page.loadFinished.disconnect(on_load)