MCPcopy Index your code
hub / github.com/PyQt5/PyQt / WebEngineView

Class WebEngineView

QWebEngineView/JsSignals.py:27–119  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

25
26
27class WebEngineView(QWebEngineView):
28 customSignal = pyqtSignal(str)
29
30 def __init__(self, *args, **kwargs):
31 super(WebEngineView, self).__init__(*args, **kwargs)
32 self.initSettings()
33 self.channel = QWebChannel(self)
34 # 把自身对象传递进去
35 self.channel.registerObject('Bridge', self)
36 # 设置交互接口
37 self.page().setWebChannel(self.channel)
38
39 # START #####以下代码可能是在5.6 QWebEngineView刚出来时的bug,必须在每次加载页面的时候手动注入
40 #### 也有可能是跳转页面后就失效了,需要手动注入,有没有修复具体未测试
41
42 # self.page().loadStarted.connect(self.onLoadStart)
43 # self._script = open('Data/qwebchannel.js', 'rb').read().decode()
44
45 # def onLoadStart(self):
46 # self.page().runJavaScript(self._script)
47
48 # END ###########################
49
50 # 注意pyqtSlot用于把该函数暴露给js可以调用
51 @pyqtSlot(str)
52 def callFromJs(self, text):
53 QMessageBox.information(self, "提示", "来自js调用:{}".format(text))
54
55 def sendCustomSignal(self):
56 # 发送自定义信号
57 self.customSignal.emit('当前时间: ' + str(time()))
58
59 @pyqtSlot(str)
60 @pyqtSlot(QUrl)
61 def load(self, url):
62 """
63 eg: load("https://pyqt.site")
64 :param url: 网址
65 """
66 return super(WebEngineView, self).load(QUrl(url))
67
68 def initSettings(self):
69 """
70 eg: 初始化设置
71 """
72 # 获取浏览器默认设置
73 settings = QWebEngineSettings.globalSettings()
74 # 设置默认编码utf8
75 settings.setDefaultTextEncoding("utf-8")
76 # 自动加载图片,默认开启
77 # settings.setAttribute(QWebEngineSettings.AutoLoadImages,True)
78 # 自动加载图标,默认开启
79 # settings.setAttribute(QWebEngineSettings.AutoLoadIconsForPage,True)
80 # 开启js,默认开启
81 # settings.setAttribute(QWebEngineSettings.JavascriptEnabled,True)
82 # js可以访问剪贴板
83 settings.setAttribute(
84 QWebEngineSettings.JavascriptCanAccessClipboard, True)

Callers 1

__init__Method · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected