我是靠谱客的博主 震动大侠,最近开发中收集的这篇文章主要介绍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等等

最后

以上就是震动大侠为你收集整理的pyqt5与html数据交互原理,pyqt5与本地html进行js交互的全部内容,希望文章能够帮你解决pyqt5与html数据交互原理,pyqt5与本地html进行js交互所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部