pyqt5与html数据交互原理,pyqt5与本地html进行js交互

最近用pyqt5封装个项目。

html与python之间交互是必不可少的。

根据度娘资料,写个例子!

在PyQt5.9中, 应用QWebEngineView和QWebChannel技术, 可以进行HTML与本地代码进行交互.

要点:创建交互对象, 基于QObject, 定义信息槽

创建QWebChannel, 在channel中注册交互对象

设置页面WebChannel

定义网页在网页中包含qwebchannel.js

在DomReady时, 创建js QWebChannel, 连接到本地对象

实例:

一. 创建Html文件

QWebChannel测试

window.onload = function () {

new QWebChannel(qt.webChannelTransport, function (channel) {

window.pyjs = channel.objects.pyjs;

pyjs.myHello(alert);

});

}

this is test !

测试

function qt5test() {

pyjs.myTest('这是测试传参的',function (res) {

alert(res);

});

}

function uptext(msg) {

document.getElementById('test').innerHTML=msg;

}

qwebchannel.js源代码

二. 创建Python代码#!/usr/bin/env python

# -*- coding:utf-8 -*-

import sys

from PyQt5.QtWidgets import QApplication

from PyQt5.QtCore import QObject, pyqtSlot, QUrl

from PyQt5.QtWebChannel import QWebChannel

from PyQt5.QtWebEngineWidgets import QWebEngineView

class CallHandler(QObject):

@pyqtSlot(result = str)

def myHello(self):

view.page().runJavaScript('uptext("hello, Python");')

print('call received')

return 'hello, Python'

@pyqtSlot(str,result=str)

def myTest(self,test):

return test

if __name__ == '__main__':

app = QApplication(sys.argv)

view = QWebEngineView()

channel = QWebChannel()

handler = CallHandler()

channel.registerObject('pyjs', handler)

view.page().setWebChannel(channel)

url_string = "file:///D:/testPyQt5/html/index.html"

view.load(QUrl(url_string))

view.show()

sys.exit(app.exec_())

注意:url_string = "file:///D:/testPyQt5/html/index.html"这一句要换成自己的文件,qwebchannel.js 与 test.html 文件放在同一个目录

qt5接收js传递的参数:

pyqt中信号与槽的参数传递。

当信号与槽函数的参数数量相同时,它们参数类型要完全一致。

信号与槽不能有缺省参数。

当信号的参数与槽函数的参数数量不同时,只能是信号的参数数量多于槽函数的参数数量,且前面相同数量的参数类型应一致,信号中多余的参数会被忽略。

此外,在不进行参数传递时,信号槽绑定时也是要求信号的参数数量大于等于槽函数的参数数量。这种情况一般是一个带参数的信号去绑定一个无参数的槽函数。

可以出传递的参数类型有很多种:str、int、list、object、float、tuple、dict等等

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值