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

PyQt5.QtWebEngineWidgetsQWebEnginePage()实现网页加载进度条显示

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

PyQt5是一个Python的GUI库,它依赖于Qt库和Qt的Web引擎模块(Qt WebEngine)。Qt WebEngine模块提供了一个用于显示和处理网页的Web浏览器功能。PyQt5中的QWebEngineWidgets模块包含了QWebEngineView,QWebEnginePage和其他与Web浏览相关的类。

QWebEnginePage类是一个用于显示和管理Web页面的类。它提供了一系列用于加载和导航网页、执行JavaScript代码、捕获页面截图以及其他一些与Web浏览相关的功能。

下面是一个使用QWebEnginePage实现网页加载进度条显示的例子。在这个例子中,我们将创建一个主窗口,其中包含一个QProgressBar和一个QWebEngineView,当我们在QWebEngineView中加载网页时,QProgressBar将显示相应的加载进度。

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


class WebPage(QWebEnginePage):
    def __init__(self, parent=None):
        super(WebPage, self).__init__(parent)
        self.loadProgress.connect(self.onLoadProgress)

    def onLoadProgress(self, progress):
        main_window.progressBar.setValue(progress)


class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

        self.progressBar = QProgressBar()
        self.progressBar.setMaximum(100)
        self.progressBar.setMinimum(0)
        self.setStatusBar(self.progressBar)

        self.webView = QWebEngineView()
        self.setCentralWidget(self.webView)

        self.webView.setPage(WebPage(self))
        self.webView.load(QUrl("https://www.example.com"))


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

在这个例子中,我们首先定义了一个名为WebPage的自定义类,该类继承自QWebEnginePage。在这个类中,我们重写了loadProgress信号的处理函数onLoadProgress,当加载进度发生变化时,该函数会被调用。

在MainWindow类的构造函数中,我们创建了一个QProgressBar并将其设置为窗口的状态栏。然后我们创建了一个QWebEngineView,并将其设置为窗口的中心部件。接下来,我们为QWebEngineView设置了一个WebPage对象作为其页面。

在main函数中,我们创建了一个QApplication对象和MainWindow对象,并将主窗口显示出来。

当我们运行这个例子时,主窗口会显示一个QProgressBar和一个加载了"https://www.example.com"网页的QWebEngineView。当网页加载过程中,QProgressBar将显示相应的进度条。