【问题标题】:Implementing web inspection in browser using PyQt5使用 PyQt5 在浏览器中实现 Web 检查
【发布时间】:2017-05-16 22:03:08
【问题描述】:

PyQt5 不再支持 QtWebKit。

虽然在 QtWebEngineWidgets 中有一些 QtWebKit 类的替代品。但是,我找不到任何替代 PyQt4 中可用的 QWebInspector 类的方法。

是否有任何此类或什至任何其他选项,以便我可以使用 PyQt5 实现网络检查器?

编辑:Qt5.6 及更高版本已删除 QtWebKitWidgets

【问题讨论】:

  • QWebInspector 在 PyQt5 中可用。 pyqt.sourceforge.net/Docs/PyQt5/api/qwebinspector.html
  • @eyllanesc 这是我尝试导入模块时得到的。 ImportError:没有名为“PyQt5.QtWebKitWidgets”的模块。实际上我正在使用 PyQt5.7 并且根据这个 link 它已被删除。
  • 我加了一个例子

标签: python-3.x pyqt pyqt5


【解决方案1】:

我有点惊讶地发现QtWebKit is making a comeback。它仍然不是 Qt-5.6 或 Qt-5.7 的一部分,但似乎它可能会继续作为单独的项目进行维护。这意味着 PyQt5 可以继续支持 QtWebKit,即使官方 Qt5 文档说它已被删除。

根据您的平台,这可能意味着如果您想在 PyQt5 中使用“新”QtWebKit 模块,您可能需要安装一些额外的包。

PS:

至于 QtWebEngine - 如果您使用的是 ubuntu/debian,看来您将不得不等待它得到支持。见Bug #1579265

【讨论】:

  • 是的,我使用的是 Ubuntu 16.04。感谢您的澄清。所以,基本上我不能在我的机器上使用 PyQt5.7 以任何方式使用 QtWebKit 或 QtWebKitWidgets 类?
  • @Ankit。不知道你为什么得出这个结论。 ubuntu 中已经有pyqt5 webkit packages,所以应该可以编译成你喜欢的任何版本。
  • 我为 qtwebkit 安装了额外的软件包,这里也提到了launchpad.net/ubuntu/+source/pyqt5。但是,仍然不能在 python3 中工作 - 虽然在 python2 中工作
  • @Ankit。你需要安装python3-pyqt5.qtwebkit
  • 这意味着安装上述软件包后我仍然无法正常工作。使用 python3 时导入错误仍然存​​在。顺便说一句,我最初使用 pip3 安装了 pyqt5 - 这会有所不同吗?
【解决方案2】:

我展示了以下示例以在 PyQt5 版本 5.7.1 中使用 QWebInspector

from PyQt5.QtCore import QUrl
from PyQt5.QtWebKit import QWebSettings
from PyQt5.QtWebKitWidgets import QWebView, QWebInspector
from PyQt5.QtWidgets import QApplication, QSplitter, QVBoxLayout, QWidget


class Window(QWidget):
    def __init__(self, parent=None):
        QWidget.__init__(self, parent=parent)
        self.view = QWebView(self)
        self.view.settings().setAttribute(
            QWebSettings.DeveloperExtrasEnabled, True)
        self.inspector = QWebInspector()
        self.inspector.setPage(self.view.page())
        self.inspector.show()
        self.splitter = QSplitter(self)
        self.splitter.addWidget(self.view)
        self.splitter.addWidget(self.inspector)
        layout = QVBoxLayout(self)
        layout.addWidget(self.splitter)

if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    window = Window()
    window.view.load(QUrl('http://www.google.com'))
    window.show()
    sys.exit(app.exec_())

【讨论】:

猜你喜欢
  • 2020-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-08
  • 1970-01-01
  • 2011-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多