Python3 PyQt5.8 QWebEngine如何使用

我最近想做一个项目,这个项目呢,需要拦截 qt 中的浏览器的 http 请求和返回信息,目前不需要做到修改,只要能够查看就行。

请求消息 可以通过实现 QWebEngineUrlRequestInterceptor 来拦截 返回信息 没有找到解决办法

望有知道的大神给指明一条路

只能用 QWebEngine 了,QWebKit 已经不再支持了。。


Python3 PyQt5.8 QWebEngine如何使用
1 回复

PyQt5的QWebEngine模块是用来嵌入Web内容的,主要包含QWebEngineView、QWebEnginePage和QWebEngineProfile这几个核心类。

基本用法很简单,先安装PyQt5和PyQtWebEngine:

pip install PyQt5 PyQtWebEngine

然后创建一个基本的浏览器窗口:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtCore import QUrl

class BrowserWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QWebEngine示例")
        self.setGeometry(100, 100, 800, 600)
        
        # 创建Web视图
        self.browser = QWebEngineView()
        self.browser.setUrl(QUrl("https://www.baidu.com"))
        
        # 设置布局
        central_widget = QWidget()
        layout = QVBoxLayout()
        layout.addWidget(self.browser)
        central_widget.setLayout(layout)
        self.setCentralWidget(central_widget)

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

如果要加载本地HTML文件,可以用file://协议:

self.browser.setUrl(QUrl.fromLocalFile("/path/to/your/file.html"))

或者直接加载HTML字符串:

self.browser.setHtml("<h1>Hello World</h1>")

JavaScript交互可以通过runJavaScript()方法:

self.browser.page().runJavaScript("alert('Hello from Python!')")

要处理页面加载事件,可以连接信号:

self.browser.loadStarted.connect(self.on_load_started)
self.browser.loadFinished.connect(self.on_load_finished)

总结建议:QWebEngine用起来跟Qt的其他组件差不多,主要是信号槽和属性设置。

回到顶部