class Page(QWebEnginePage): def __init__(self, view): super(Page, self).__init__() self.parent = view.parent self.view = view self.result = QVariant() self.fullView = QWebEngineView() self.exitFSAction = QAction(self.fullView) self.loop = None def javaScriptConsoleMessage(self, level, msg, line, sourceID): """Override javaScriptConsoleMessage to use debug log.""" if level == QWebEnginePage.InfoMessageLevel: print("JS - INFO - Ligne {} : {}".format(line, msg)) elif level == QWebEnginePage.WarningMessageLevel: print("JS - WARNING - Ligne {} : {}".format(line, msg)) else: print("JS - ERROR - Ligne {} : {}".format(line, msg)) def hittestcontent(self, pos): return WebHitTestResult(self, pos) def maptoviewport(self, pos): return QPointF(pos.x(), pos.y()) def executejavascript(self, scriptsrc): self.loop = QEventLoop() self.result = QVariant() QTimer.singleShot(250, self.loop.quit) self.runJavaScript(scriptsrc, self.callbackjs) self.loop.exec_() self.loop = None return self.result def callbackjs(self, res): if self.loop is not None and self.loop.isRunning(): self.result = res self.loop.quit() def vsource(self): if "view-source:http" in self.url().toString(): self.load(QUrl(self.url().toString().split("view-source:")[1])) else: self.triggerAction(self.ViewSource) def cutaction(self): self.triggerAction(self.Cut) def copyaction(self): self.triggerAction(self.Copy) def pasteaction(self): self.triggerAction(self.Paste) def exitfs(self): self.triggerAction(self.ExitFullScreen) def makefullscreen(self, request): if request.toggleOn(): self.fullView = QWebEngineView() self.exitFSAction = QAction(self.fullView) self.exitFSAction.setShortcut(Qt.Key_Escape) self.exitFSAction.triggered.connect(self.exitfs) self.fullView.addAction(self.exitFSAction) self.setView(self.fullView) self.fullView.showFullScreen() self.fullView.raise_() else: del self.fullView self.setView(self.view) request.accept()
import os from PyQt5.QtWebEngineWidgets import QWebEngineView from PyQt5.Qt import QUrl from PyQt5 import QtWidgets, QtGui widget = QWebEngineView() fake_url = QUrl.fromLocalFile(os.path.abspath("seamless.html")) widget.setWindowTitle(PINS.title.get().data) reloadAction = QtWidgets.QAction(QtGui.QIcon('exit.png'), '&Reload', widget) reloadAction.setShortcut('F5') reloadAction.setStatusTip('Reload') reloadAction.triggered.connect(widget.reload) widget.addAction(reloadAction) widget.setHtml(PINS.val.get().data, fake_url) widget.show()