python - Qt WebEngine 中 QWebInspector 的替代品是什么?
问题描述
代码片段的示例在这里:
from PySide2 import QtCore, QtGui, QtWidgets, QtWebChannel
from PySide2.QtWebEngineWidgets import QWebEngineView, QWebEngineSettings
class AppWindow(QtWidgets.QMainWindow):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.view = WebView(self)
self.setCentralWidget(self.view)
self.view.settings().setAttribute(QWebEngineSettings.JavascriptEnabled, True)
self.view.settings().setAttribute(QWebEngineSettings.PluginsEnabled, True);
self.page = self.view.page()
self.page.setDevToolsPage(self.page)
#self.inspector = QWebInspector(self) # Crash is here!!!
#self.inspector.setPage(self.page)
#self.inspector.hide()
上面的三行在以前的版本中运行良好。
QWebInspector
PySide2中的替代方案是什么?
解决方案
QWebEngine没有等效QWebInspector
的类,因为开发工具是由底层 Chrome 浏览器提供的。需要设置环境变量以启用这些工具,然后您可以通过单独的基于 Chrome 的浏览器访问它们 - 请参阅Qt5 文档中的Qt WebEngine 开发人员工具以获取完整详细信息。
下面是一个基于您的示例代码的简单演示:
import sys, os
DEBUG_PORT = '5588'
DEBUG_URL = 'http://127.0.0.1:%s' % DEBUG_PORT
os.environ['QTWEBENGINE_REMOTE_DEBUGGING'] = DEBUG_PORT
from PySide2 import QtCore, QtGui, QtWidgets, QtWebChannel
from PySide2.QtWebEngineWidgets import QWebEngineView, QWebEngineSettings
class AppWindow(QtWidgets.QMainWindow):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.view = QWebEngineView(self)
self.setCentralWidget(self.view)
self.view.settings().setAttribute(QWebEngineSettings.JavascriptEnabled, True)
self.view.settings().setAttribute(QWebEngineSettings.PluginsEnabled, True)
self.view.loadFinished.connect(self.handleLoaded)
self.view.load(QtCore.QUrl('https://google.com/'))
self.inspector = QWebEngineView()
self.inspector.setWindowTitle('Web Inspector')
self.inspector.load(QtCore.QUrl(DEBUG_URL))
def handleLoaded(self, ok):
if ok:
self.view.page().setDevToolsPage(self.inspector.page())
self.inspector.show()
app = QtWidgets.QApplication(sys.argv)
win = AppWindow()
win.setGeometry(600, 100, 600, 480)
win.show()
app.exec_()
推荐阅读
- java - 我的应用程序运行正常,但是当我单击购物车按钮时,它会将我带到我开始的第一个屏幕
- spring - 从 sqs fifo 队列中获取消息后以相同的顺序执行消息
- reference - 我什么时候应该使用参考而不是转移所有权?
- javascript - JS图像比较按钮溢出
- .net - 来自远程 docker 的 Visual Studio 2017 调试代码
- javascript - 为什么在使用 .split、.reverse、.join 时需要 ("")
- javascript - 将javascript函数翻译成JQuery
- c# - 根据 bindingcontext 删除 ListView 项
- android - 更新 Android Studio 的问题
- java - 如何让 KeyListener 仅在 getKeyLocation() == KeyEvent.KEY_LOCATION_LEFT 时做出反应?