欢迎访问宙启技术站
智能推送

PyQt5.QtWebEngineWidgetsQWebEnginePage()实现网页加载失败处理方法

发布时间:2024-01-05 21:30:45

PyQt5.QtWebEngineWidgets模块中的QWebEnginePage类可以用于加载和显示网页内容。在加载网页时,有时候会发生加载失败的情况,对于这种情况,我们可以通过重写QWebEnginePage类的相关方法来处理。

在QWebEnginePage中,可以重写以下方法来处理网页加载失败的情况:

1. onFeaturePermissionRequested - 在请求权限时触发

2. onLinkHovered - 在鼠标悬停链接时触发

3. onLoadFinished - 在加载完成时触发

4. onLoadStarted - 在开始加载时触发

5. onPermissionRequested - 在请求权限时触发

6. onProxyAuthenticationRequired - 在需要代理身份验证时触发

7. onRepaintRequested - 在需要重绘时触发

8. onScrollRequested - 在需要滚动时触发

9. onUrlChanged - 在URL改变时触发

下面是一个使用PyQt5.QtWebEngineWidgets.QWebEnginePage()实现网页加载失败处理方法的例子:

from PyQt5 import QtCore, QtGui, QtWidgets, QtWebEngineWidgets

class WebEnginePage(QtWebEngineWidgets.QWebEnginePage):
    def __init__(self, parent=None):
        super(WebEnginePage, self).__init__(parent)

    def javaScriptConsoleMessage(self, level, message, lineNumber, sourceID):
        print(level, message, lineNumber, sourceID)

    def certificateError(self, error):
        print('Certificate Error:', error.url().toString())

    def featurePermissionRequested(self, frame, feature):
        print('Feature Permission Requested:', feature)

    def linkHovered(self, url):
        print('Link Hovered:', url.toString())

    def loadFinished(self, ok):
        if ok:
            print('Page loaded successfully!')
        else:
            print('Failed to load page!')

    def loadStarted(self):
        print('Page loading started...')

    def permissionRequested(self, origin, permission):
        print('Permission Requested:', origin, permission)

    def proxyAuthenticationRequired(self, proxy, auth):
        print('Proxy Authentication Required:', proxy, auth)

    def repaintRequested(self, rect):
        print('Repaint Requested:', rect)

    def scrollRequested(self, dx, dy, rectToScroll):
        print('Scroll Requested:', dx, dy, rectToScroll)

    def urlChanged(self, url):
        print('URL Changed:', url.toString())

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.centralwidget = QtWidgets.QWidget(self)
        self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
        self.webView = QtWebEngineWidgets.QWebEngineView(self.centralwidget)
        self.verticalLayout.addWidget(self.webView)
        self.setCentralWidget(self.centralwidget)
        self.webView.setPage(WebEnginePage(self.webView))
        self.webView.load(QtCore.QUrl('https://www.example.com'))

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    mainWindow = MainWindow()
    mainWindow.show()
    sys.exit(app.exec_())

上述例子中,定义了一个WebEnginePage类,继承自QtWebEngineWidgets.QWebEnginePage类。在该类中,重写了QWebEnginePage中的相关方法,以处理网页加载失败的情况。

在MainWindow类中,创建了一个QtWebEngineWidgets.QWebEngineView实例,并设置其页面为WebEnginePage的实例。然后加载了一个网页。当网页加载失败时,会在控制台输出相应的信息。

可以根据实际需求,在相关方法中添加自定义的处理代码。这样就可以灵活地处理网页加载失败的情况了。