QtWebkit和QWebEngineView与Javascript交互
以前还是 QWebView 的时候和 Javascript 交互起来很方便,但是到了 Qt5.6 以后改用了 QWebEngineView ,并通过其提供的 qwebchannel.js 来进行交互。可能是由于刚出来的原因,这玩意儿有个 bug 就是必须在每次加载页面的时候手动注入,跳转页面后就失效了,需要手动注入,目前有没有修复具体未测试。这里对 QWebView 和 QWebEngineView 与 Js 交互都做了一个示例。
# 说明
针对 QWebView 通过 QWebFrame 的 addToJavaScriptWindowObject 把对象传递到 Javascript 中
针对 QWebEngineView 通过 QWebChannel.registerObject('Bridge', QObject) 把对象传递到 Javascript 中
可以通过 @pyqtSlot 装饰器来申明该方法可以暴露给 Javascript 调用
@pyqtSlot(str)
def callFromJs(self, text):
QMessag ...
PyQt5编译QWebView与QWebEngineView共存
在 PyQt5.5 过后移除了 QWebView 控件,改用 QWebEngineView ,但是这个刚开始用起来不是很方便,最近在整理一些例子的时候需要同时使用 QWebView 和 QWebEngineView ,故希望把 QWebView 重新加入到后面的 PyQt5 版本中,查看 PyQt5.10.1 的源码发现里面其实是有 QWebView 的,只是因为 Qt5.10.1 中没有编译好的 dll 等导致无法编译。
# 准备工作
安装 VS2015
安装 Qt5.10.1
前往 https://github.com/annulen/webkit/releases 下载对应的文件,比如:qtwebkit-5.212.0_alpha2-qt59-msvc2015-x86.zip
下载 PyQt5.10.1 源码
下载对应版本的 sip 源码
# 编译
设置环境变量 set PATH=D:\soft\Qt\Qt5.10.1\5.10.1\msvc2015\bin;%PATH%
首先进入 vs2015 命令行编译 sip 并安装, python configure.py ...