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

Python中使用QWebEnginePage()实现网页历史记录管理

发布时间:2023-12-18 03:41:37

在Python中,可以使用QWebEnginePage()类来实现网页历史记录的管理。QWebEnginePage()是QtWebEngine模块中的一个类,用于创建和管理Web页面。

下面是一个使用QWebEnginePage()实现网页历史记录管理的例子:

from PyQt5.QtWidgets import QApplication, QMainWindow, QToolBar, QLineEdit, QAction, QMessageBox
from PyQt5.QtCore import QUrl
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        # 创建一个浏览器视图
        self.webview = QWebEngineView()
        self.setCentralWidget(self.webview)

        # 创建一个工具栏
        toolbar = QToolBar()
        self.addToolBar(toolbar)

        # 创建一个地址栏
        self.urlbar = QLineEdit()
        toolbar.addWidget(self.urlbar)

        # 创建一个后退的操作
        back_action = QAction('Back', self)
        back_action.triggered.connect(self.webview.back)
        toolbar.addAction(back_action)

        # 创建一个前进的操作
        forward_action = QAction('Forward', self)
        forward_action.triggered.connect(self.webview.forward)
        toolbar.addAction(forward_action)

        # 创建一个刷新的操作
        reload_action = QAction('Reload', self)
        reload_action.triggered.connect(self.webview.reload)
        toolbar.addAction(reload_action)

        # 创建一个停止加载的操作
        stop_action = QAction('Stop', self)
        stop_action.triggered.connect(self.webview.stop)
        toolbar.addAction(stop_action)

        # 创建一个网页历史记录管理对象
        self.page = QWebEnginePage()
        self.page.urlChanged.connect(self.update_urlbar)

        # 将网页历史记录管理对象与浏览器视图关联
        self.webview.setPage(self.page)

        # 设置主窗口大小和标题
        self.setGeometry(100, 100, 800, 600)
        self.setWindowTitle('Web Browser')

    def load_page(self):
        # 获取地址栏中的URL
        url = self.urlbar.text()
        if url.startswith('http://') or url.startswith('https://'):
            self.webview.load(QUrl(url))
        else:
            self.webview.load(QUrl('http://' + url))

    def update_urlbar(self, url):
        self.urlbar.setText(url.toString())


if __name__ == '__main__':
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec_()

上面的示例中,首先创建了一个QWebEngineView对象,作为浏览器视图,并设置为主窗口的中央小部件。然后,创建了一个工具栏,并添加了一个地址栏、后退、前进、刷新和停止加载的操作,通过点击这些操作可以控制页面的导航和刷新。

接着,创建了一个QWebEnginePage对象,作为网页历史记录管理器。将这个对象与浏览器视图关联,通过setPage()方法将其设置为浏览器视图的页面。

通过urlChanged信号连接到update_urlbar槽函数,每当页面的URL发生变化时,都会更新地址栏的文本。

主窗口的load_page()函数用于加载地址栏中输入的URL。如果URL以http://https://开头,则直接加载该URL;否则,在URL前面添加http://然后加载。这样,用户就可以在地址栏中输入完整的URL或简化的URL,浏览器都能加载正确的网页。

最后,在if __name__ == '__main__':代码块中创建了一个应用程序对象和主窗口对象,并显示主窗口。

总结来说,通过使用QWebEnginePage()类,我们可以方便地实现网页历史记录的管理,以及基本的导航和刷新功能。