> 文章列表 > PyQt5使用QtWebEngineWidgets调用js

PyQt5使用QtWebEngineWidgets调用js

PyQt5使用QtWebEngineWidgets调用js

更新时间:2023-03-24

使用版本

python:3.7.0
IDE:pycharm
PyQt5使用QtWebEngineWidgets调用js
pip install PyQt5==5.10.1 -i https://pypi.douban.com/simple/ --user

超过5.11的PyQt5版本:会报错
from PyQt5.QtWebEngineWidgets import *
模块导入失败。
得单独安装:
pip install PyQtWebEngine
原因:高版本,这个模块被单独划分了出来。

我下载了,但是搞了2h,还是报错。

低版本使用:只需要PyQt5==5.10.1即可。不需要安装额外的模块。

使用例子:

py文件

"""
PyQt5调用JavaScript代码PyQt5和JavaScript交互
PyQt5和JavaScript互相调用,互相传输数据
"""import sys
import os
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import *class PyQtCallJS(QWidget):def __init__(self):super(PyQtCallJS, self).__init__()self.setWindowTitle('PyQt5调用JavaScript')self.setGeometry(5,30,1355,730)# 设置垂直布局self.layout = QVBoxLayout()# 应用于垂直布局self.setLayout(self.layout)# 设置Web页面控件self.browser =  QWebEngineView()url = os.getcwd() + '/test.html'self.browser.load(QUrl.fromLocalFile(url))# 把web控件放到布局里self.layout.addWidget(self.browser)button = QPushButton('设置全名')self.layout.addWidget(button)# 槽和信号绑定button.clicked.connect(self.fullname)# 添加按钮的单击事件# 前两个框自己输入,最后一个框自动相加def fullname(self):self.value = 'hello world'self.browser.page().runJavaScript('fullname("' + self.value +'");',self.js_callback)# 通过回调函数返回值def js_callback(self,result):print(result)
if __name__ == '__main__':app = QApplication(sys.argv)demo = PyQtCallJS()demo.show()sys.exit(app.exec_())

html文件:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>测试页面</title><script>function fullname(value) {//alert("<" + value + ">")var t=document.getElementById("firstname");t.value=valuereturn fullname;}</script>
</head>
<form><label>First Name:</label><input type="text" name="firstname" id="firstname"></input><br /></form></body>
</html>

效果:

PyQt5使用QtWebEngineWidgets调用js