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等等

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521523.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

! [rejected]

git push -u origin master解决 git push -u -f origin master

laravel8找不到控制器_找一个“靠谱儿”的烟雾探测器方案,难不难?

安全,应该说是人们生活中最“硬核”的刚需。很多安全设备平日里几乎是“透明”的,大家感觉不到它们的存在,而一旦遇到事儿,它们却必须能够派上用场,颇有些“养兵千日,用兵一时”的味道。因此,如…

世界杯迄今最火的一场比赛 一文看懂世界杯背后的阿里云黑科技

摘要: 世界杯“法阿之战”中帕瓦尔世界波以及姆巴佩梅开二度一定让你印象深刻,而梅西的饮恨离开也让不少球迷碎了心。但你知道,比赛当天的阿里云藏着什么秘密吗?世界杯“法阿之战”中帕瓦尔世界波以及姆巴佩梅开二度一定让你印象深…

你在北边的西二旗被水淹没,我在东边的八通线不知所措

戳蓝字“CSDN云计算”关注我们哦!作者 | 朱小五and王小九责编 | 刘丹当代大城市年轻人,生活扇来的第一个巴掌就是——租房。而大部分年轻人在租房的第一年,要么付了大公司的服务费,要么交了黑中介的智商税。在积累了一定被坑的经验…

【免费公测中】为数据赋予超能力,阿里云重磅推出Serverless数据分析引擎-Data Lake Analytics

摘要: 近日,阿里云重磅推出Serverless数据分析引擎-Data Lake Analytics,Data Lake Analytics,帮助更多不具备分析能力的存储服务,赋予其分析的能力。近日,阿里云重磅推出Serverless数据分析引擎-Data Lake…

jq获取当前完整html,jquery怎样获取html的内容?

jquery怎样获取html的内容?下面本篇文章给大家介绍一下使用jquery获取html内容的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。jquery获取html元素内容的方法方法1:使用html()方法html()可以设置或返回所…

内部矩阵维度必须一致simulink_深度学习/目标检测之numpy——向量和矩阵乘法相关...

numpy中表示向量和矩阵乘法的有四种"*"、outer、dot、multiply。1、关于 "*" 的用法"*" 也为对于元素的乘积,但是 "*" 作为乘法运算时,必须满足 numpy 的 broadcasting(广播) 的原则 ,当两个矩阵相乘…

阿里云企业IPv6部署方案

摘要: 一、什么是IPv6。 IP version 6 (IPv6)是IP协议(Internet Protocol)的最新版本,设计作为IP version 4 (IPv4) [RFC791]的继任版本。一、什么是IPv6。IP version 6 (IPv6)是IP协议(Internet Protocol)…

三年级优秀书籍推荐_三年级课外推荐阅读书目

小学三年级推荐阅读书目及简介导言:三年级是孩子分化的年级,课程难度加大,孩子的试卷上不再是皆大欢喜的百分。而儿童阅读学的研究也表明,孩子如果在三年级还没有养成阅读兴趣和阅读习惯,他在以后的学校中很难再有阅读习惯。所以,爱孩子的父母要加油呀!关…

区块链应用@纸贵科技:基于阿里云容器服务护航内容版权

摘要: 区块链如何护航内容版权?区块链已经成为业界内外家喻户晓的一门技术,很多企业已经开始尝试将区块链应用于不同场景。目前,开源的Hyperledger Fabric区块链技术与容器技术的应用组合已成为一种经典的区块链方案,纸…

xbox one s驱动_续航800公里 体验6座SUV理想ONE

在新能源汽车产品日益完善的今天,越来越多的优质车型走进了我们的生活。续航能力一直是消费者们最关注的一个问题,为了缓解里程焦虑问题,高续航产品逐渐成为纯电动汽车的新消费主力。今天我们要聊的,就是一款新能源汽车大军中的生…

html添加子节点方法,HTML DOM appendChild() 方法

HTML DOM appendChild() 方法appendChild()方法的作用是:在指定父节点的子节点列表的末尾添加一个节点。如果给定的子节点是文档中现有节点的引用,appendChild()将它从当前位置移动到新位置(参见下面的“更多示例”)。使用insertBefore()方法可在指定的现…

靓仔落泪,性能问题定位难倒我了

戳蓝字“CSDN云计算”关注我们哦!作者 | popsuper1982责编 | 刘丹今天我的主题是在微服务场景下的一个性能问题的定位优化,那么今天会讲一个我们其实出现的一个真实的一个场景,然后其实还是花了蛮长时间,然后把这个东西才定位到一…

LC3视角:Kubernetes下日志采集、存储与处理技术实践

摘要: 在Kubernetes服务化、日志处理实时化以及日志集中式存储趋势下,Kubernetes日志处理上也遇到的新挑战,包括:容器动态采集、大流量性能瓶颈、日志路由管理等问题。本文介绍了“Logtail 日志服务 生态”架构,介绍…

RabbitMQ 添加用户(入门试炼_第2篇)

文章目录一、登录二、添加用户和角色2.1. 用户角色介绍2.2. 用户和角色分配2.3. 创建Virtual Hosts一、登录 二、添加用户和角色 2.1. 用户角色介绍 1、超级管理员(administrator) 可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(…

手机屏幕常见故障_手机常见故障,这都不是事

1、手机触屏不灵敏小伙伴们经常说,我的手机偶尔会反应不灵敏。需要连续点击几次,有时候半天才有反应。这是为什么呢?这很可能是由于一些操作不当造成的:1.非原装充电器输出电压不稳定;2.屏幕保护膜导致触屏的不灵敏&am…

html5 css 文本缩进,使用 CSS 文本缩进和 Padding 隐藏文本 - 文章教程

一个网站都会有一个 LOGO,这似乎是一条通用的布局和内容,而对于这个 LOGO 的代码编写,一般都会使用 插入 LOGO 图片,然后再写上文字的描述,其实这样的方法有点过时了,因为这些描述文本只针对于这张 LOGO 图…

如何查看一个组件的 classid是多少_如何查看iphone电池使用次数?6s电池容量多少需要更换?...

手机用久了之后,总感觉电池特别不耐用,特别是到了冬天,我相信很多人都会有种感觉,就是手机电池也越来越不耐用,待机时间变短,一天甚至需要三充。手机的电池确实和温度有关,但在使用一段时间后&a…

SLB访问日志分析:基于客户端来源和HTTP状态码的实践

摘要: 阿里云负载均衡SLB可以对多台云服务器(ECS)进行流量分发,支持TCP的四层负载均衡和基于HTTP/HTTPS的七层负载均衡。使用SLB可以降低单台ECS异常时对业务的冲击,提升系统可用性。同时,结合弹性伸缩服务…