pyqt5与html数据交互原理,pyqt5与本地html进行js交互
最近用pyqt5封裝個(gè)項(xiàng)目。
html與python之間交互是必不可少的。
根據(jù)度娘資料,寫個(gè)例子!
在PyQt5.9中, 應(yīng)用QWebEngineView和QWebChannel技術(shù), 可以進(jìn)行HTML與本地代碼進(jìn)行交互.
要點(diǎn):創(chuàng)建交互對(duì)象, 基于QObject, 定義信息槽
創(chuàng)建QWebChannel, 在channel中注冊(cè)交互對(duì)象
設(shè)置頁面WebChannel
定義網(wǎng)頁在網(wǎng)頁中包含qwebchannel.js
在DomReady時(shí), 創(chuàng)建js QWebChannel, 連接到本地對(duì)象
實(shí)例:
一. 創(chuàng)建Html文件
QWebChannel測(cè)試window.onload = function () {
new QWebChannel(qt.webChannelTransport, function (channel) {
window.pyjs = channel.objects.pyjs;
pyjs.myHello(alert);
});
}
this is test !
測(cè)試function qt5test() {
pyjs.myTest('這是測(cè)試傳參的',function (res) {
alert(res);
});
}
function uptext(msg) {
document.getElementById('test').innerHTML=msg;
}
qwebchannel.js源代碼
二. 創(chuàng)建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 文件放在同一個(gè)目錄
qt5接收js傳遞的參數(shù):
pyqt中信號(hào)與槽的參數(shù)傳遞。
當(dāng)信號(hào)與槽函數(shù)的參數(shù)數(shù)量相同時(shí),它們參數(shù)類型要完全一致。
信號(hào)與槽不能有缺省參數(shù)。
當(dāng)信號(hào)的參數(shù)與槽函數(shù)的參數(shù)數(shù)量不同時(shí),只能是信號(hào)的參數(shù)數(shù)量多于槽函數(shù)的參數(shù)數(shù)量,且前面相同數(shù)量的參數(shù)類型應(yīng)一致,信號(hào)中多余的參數(shù)會(huì)被忽略。
此外,在不進(jìn)行參數(shù)傳遞時(shí),信號(hào)槽綁定時(shí)也是要求信號(hào)的參數(shù)數(shù)量大于等于槽函數(shù)的參數(shù)數(shù)量。這種情況一般是一個(gè)帶參數(shù)的信號(hào)去綁定一個(gè)無參數(shù)的槽函數(shù)。
可以出傳遞的參數(shù)類型有很多種:str、int、list、object、float、tuple、dict等等
總結(jié)
以上是生活随笔為你收集整理的pyqt5与html数据交互原理,pyqt5与本地html进行js交互的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 杭州专卖店_杭州JAVA哪家有
- 下一篇: mysql naivcat执行存储过程_