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

PyQt5.QtWebEngineWidgetsQWebEnginePage()实现网页跳转功能

发布时间:2024-01-05 21:23:39

PyQt5.QtWebEngineWidgets模块中的QWebEnginePage类提供了一个用于在Qt应用程序中渲染和操作网页的接口。该类的构造函数的签名为:QWebEnginePage(parent: QObject = None)。下面是一个简单的使用例子,演示如何使用QWebEnginePage实现网页跳转功能:

from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage
import sys


class WebPage(QWebEnginePage):
    def __init__(self):
        super().__init__()

    def javaScriptConsoleMessage(self, level, message, lineNumber, sourceID):
        # 打印网页中的JavaScript Console信息
        print(f'JavaScript Console: {level} - {message} - line {lineNumber}')


class WebView(QWebEngineView):
    def __init__(self):
        super().__init__()

    def createWindow(self, windowType):
        # 创建新窗口时,打开在当前窗口中
        return self


if __name__ == '__main__':
    # 创建Qt应用程序
    app = QApplication(sys.argv)

    # 创建WebView和WebPage对象
    webView = WebView()
    webPage = WebPage()

    # 将WebPage对象设置给WebView
    webView.setPage(webPage)

    # 信号连接到槽函数,实现网页跳转功能
    webPage.linkClicked.connect(lambda url: webView.load(url))

    # 加载初始网页
    webView.load(QUrl("https://www.google.com"))

    # 显示WebView
    webView.show()

    # 运行Qt应用程序
    sys.exit(app.exec_())

在这个例子中,我们首先定义了一个自定义的WebPage类,继承自QWebEnginePage。在WebPage类中重写了javaScriptConsoleMessage方法,以在Python控制台中打印JavaScript Console的信息。

然后,我们定义了一个自定义的WebView类,继承自QWebEngineView。在WebView类中重写了createWindow方法,以在当前窗口中打开新窗口。

在主函数中,我们创建了一个Qt应用程序,创建了一个WebView对象和一个WebPage对象,并将WebPage对象设置给WebView。然后,我们通过连接WebPage的linkClicked信号和WebView的load方法,实现了网页跳转功能。最后,我们加载了初始网页并显示了WebView。

当我们运行这个例子时,会弹出一个窗口,显示了Google的主页。我们可以在这个窗口中输入任意的网址,然后按下回车键,就会加载相应的网页。

总结起来,使用PyQt5.QtWebEngineWidgets的QWebEnginePage类,我们可以很方便地实现网页跳转功能,并且还可以获取和操作网页中的元素和内容。