王剑编程网

分享专业编程知识与实战技巧

19.2 PyQt5 Web操作-WebEngineVIew与JS交互

1.QWebEngineView简介

可以通过QWebEngineView的page().runJavaScript()方法执行页面中的js方法,并且可以指定一个回调函数来接收js的返回值。

2.QWebEngineView案例

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

"""
    提示:ModuleNotFoundError: No module named 'PyQt5.QtWebEngineWidgets' 错误
    安装pip install PyQt5 PyQtWebEngine
"""


class QWebEngineViewCallJs(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('WebEngineVIew与JS交互')
        self.resize(600, 400)
        v_layout = QVBoxLayout(self)

        self.browser = QWebEngineView()
        html = os.path.join(os.getcwd(), 'demo.html')
        self.browser.load(QUrl.fromLocalFile(html))  # 加载本地html

        self.set_name = QPushButton('设置姓名')
        self.set_name.clicked.connect(self.set_name_func)

        v_layout.addWidget(self.browser)
        v_layout.addWidget(self.set_name)

    def js_callback(self, res):
        # 通过一个回调函数的方式获取js方法的返回值
        print(res)

    def set_name_func(self):
        # 通过QWebEngineView的page().runJavaScript()方法执行页面中的js方法,参数1:传入要执行的js方法名【如需向js代码传参,即可按照js方法参数输入依次传入】,参数2:接收返回值的回调函数
        self.browser.page().runJavaScript("setFullName('Hello word')", self.js_callback)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = QWebEngineViewCallJs()
    w.show()
    app.exec()

demo.html




    
    Title






<script> function setFullName(value) { alert(value) let firstname = document.getElementById("first_name").value let lastname = document.getElementById("last_name").value document.getElementById("full_name").value = firstname + lastname document.getElementById("submit").style.display = "block" return firstname + lastname } </script>

3.运行结果




控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言