from PyQt5.QtWidgets import QDialog, QPlainTextEdit, QLineEdit, QPushButton, QHBoxLayout, QVBoxLayout
from PyQt5.QtWidgets import QGroupBox
from PyQt5.QtWebEngineWidgets import *
from PyQt5.QtWebChannel import *
from PyQt5.QtCore import QUrl, pyqtSignal
from TInteractObject import TInteractObj
class TMainWindow(QDialog):
SigSendMessageToJS = pyqtSignal(str)
def __init__(self, parent=None):
super().__init__(parent)
# ---Qt widget and layout---
self.mpQtContentTextEdit = QPlainTextEdit(self)
self.mpQtContentTextEdit.setMidLineWidth(400)
self.mpQtContentTextEdit.setReadOnly(True)
self.mpQtSendLineEdit = QLineEdit(self)
self.mpQtSendBtnByInteractObj = QPushButton('Send', self)
self.mpQtSendBtnByInteractObj.setToolTip('Send message by Interact object style')
self.mpQtSendBtnByJavaScript = QPushButton('Send2', self)
self.mpQtSendBtnByJavaScript.setToolTip('Send message by runJavaScript style')
self.pQtSendHLayout = QHBoxLayout()
self.pQtSendHLayout.setSpacing(0)
self.pQtSendHLayout.addWidget(self.mpQtSendLineEdit)
self.pQtSendHLayout.addSpacing(5)
self.pQtSendHLayout.addWidget(self.mpQtSendBtnByInteractObj)
self.pQtSendHLayout.addSpacing(5)
self.pQtSendHLayout.addWidget(self.mpQtSendBtnByJavaScript)
self.pQtTotalVLayout = QVBoxLayout()
self.pQtTotalVLayout.setSpacing(0)
self.pQtTotalVLayout.addWidget(self.mpQtContentTextEdit)
self.pQtTotalVLayout.setSpacing(5)
self.pQtTotalVLayout.addLayout(self.pQtSendHLayout)
self.pQtGroup = QGroupBox('Qt View', self)
self.pQtGroup.setLayout(self.pQtTotalVLayout)
# ---Web widget and layout---
self.mpJSWebView = QWebEngineView(self)
self.pWebChannel = QWebChannel(self.mpJSWebView.page())
self.pInteractObj = TInteractObj(self)
self.pWebChannel.registerObject("interactObj", self.pInteractObj)
self.mpJSWebView.page().setWebChannel(self.pWebChannel)
self.url = 'file:///F:/py_projects/demo/ichat/client/QWebEngineView内嵌网页与Python的数据交互/JSTest.html'
self.mpJSWebView.page().load(QUrl(self.url))
self.mpJSWebView.show()
self.pJSTotalVLayout = QVBoxLayout()
self.pJSTotalVLayout.setSpacing(0)
self.pJSTotalVLayout.addWidget(self.mpJSWebView)
self.pWebGroup = QGroupBox('Web View', self)
self.pWebGroup.setLayout(self.pJSTotalVLayout)
# ---TMainWindow total layout---
self.mainLayout = QHBoxLayout()
self.mainLayout.setSpacing(0)
self.mainLayout.addWidget(self.pQtGroup)
self.mainLayout.setSpacing(5)
self.mainLayout.addWidget(self.pWebGroup)
self.setLayout(self.mainLayout)
self.setMinimumSize(1130, 680)
self.mpQtSendBtnByInteractObj.clicked.connect(self.OnSendMessageByInteractObj)
self.mpQtSendBtnByJavaScript.clicked.connect(self.OnSendMessageByJavaScript)
self.pInteractObj.SigReceivedMessFromJS.connect(self.OnReceiveMessageFromJS)
self.SigSendMessageToJS.connect(self.pInteractObj.SigSendMessageToJS)
def OnReceiveMessageFromJS(self, strParameter):
print('OnReceiveMessageFromJS()')
if not strParameter:
return
self.mpQtContentTextEdit.appendPlainText(strParameter)
def OnSendMessageByInteractObj(self):
strMessage = self.mpQtSendLineEdit.text()
if not strMessage:
return
self.SigSendMessageToJS.emit(strMessage)
def OnSendMessageByJavaScript(self):
strMessage = self.mpQtSendLineEdit.text()
if not strMessage:
return
strMessage = 'Received string from Qt:' + strMessage
self.mpJSWebView.page().runJavaScript("output(%s)" % strMessage)
self.mpJSWebView.page().runJavaScript("showAlert()")
QWebEngineView内嵌本地HTML及数据交互完整代码
2星 需积分: 48 38 浏览量
2018-09-05
12:56:12
上传
评论 7
收藏 6KB RAR 举报
PengYunjing
- 粉丝: 5
- 资源: 19
最新资源
- 基于opencv的dnn模块实现Yolo-Fastest的目标检测python源码+模型+说明(高分项目).zip
- 使用Python调用微信本地ocr服务.zip
- 【精品推荐】人工智能在医疗中的应用.pptx
- 【精品推荐】电子医疗仪器人机接口-(1).ppt
- 【精品推荐】电子医疗仪器人机接口.ppt
- ubuntu镜像ubuntu镜像01
- 基于paddle搭建神经网络实现5种水果识别分类python源码+数据集(高分毕设).zip
- 【精品推荐】电子商务网店类型介绍.ppt
- 基于paddle搭建神经网络实现水果识别分类python源码+数据集(高分项目).zip
- 三菱plc编程口通信学习笔记.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈