python - 将 Chrome 标志与 QtWebEngine (PyQt5) 一起使用

标签 python pyqt5 chromium qtwebengine google-chrome-flags

对于我的 PyQt5 浏览器项目的开发,我阅读了 here通过将 Chrome 标志作为应用程序参数传递,它们将自动传递到 QtWebEngineProcess.exe当它被代码启动时。我试过做app = QApplication(sys.argv + [--enable-force-dark]) ,但这不会使 chromium 在暗模式下渲染网页(我也尝试了很多标志名称的变体,所以我认为这不是问题)。

我想知道是否可以手动调用 QtWebEngineProcess.exe从 PyQt5 代码中设置自定义标志,通过继承一个类并覆盖一个函数,并连接 QtWebEngineView到这个类,就像 ...("QtWebEngineProcess.exe -[1st flag] -[2nd flag"]) ?

如果上述方法不可行,是否有任何其他方法可以在 QtWebEngineView 中使用带有自定义标志的 Chrome ? ?我正在运行PyQt5.14.2 (Chromium 77), Python 3.8.0, Windows 10

最佳答案

可以使用以下方法设置 Chrome 标志(参见 the docs):

  • 作为参数传递给 QApplication:

    args = ["--foo-arg=foo-value", "--bar-arg=bar-value"]
    app = QtWidgets.QApplication(args)
    # or 
    # app = QtWidgets.QApplication(sys.argv + args)
    
  • 通过环境变量QTWEBENGINE_CHROMIUM_FLAGS设置:

    import os
    
    os.environ["QTWEBENGINE_CHROMIUM_FLAGS"] = "--foo-arg=foo-value --bar-arg=bar-value"
    app = QtWidgets.QApplication(sys.argv)
    

  • 因此,您的尝试是正确的,但问题似乎是 Qt WebEngine 并非支持所有 Chrome 标志,而 --enable-force-dark 似乎就是这种情况。 .网上搜到this post提供替代方案:--blink-settings=darkMode=4,darkModeImagePolicy=2
    from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets
    
    if __name__ == "__main__":
        import os
        import sys
    
        os.environ[
            "QTWEBENGINE_CHROMIUM_FLAGS"
        ] = "--blink-settings=darkMode=4,darkModeImagePolicy=2"
        app = QtWidgets.QApplication(sys.argv)
    
        # or
        # args = sys.argv + ["--blink-settings=darkMode=4,darkModeImagePolicy=2"]
        # app = QtWidgets.QApplication(sys.argv + args)
    
        view = QtWebEngineWidgets.QWebEngineView()
        view.load(QtCore.QUrl("https://www.google.com"))
        view.show()
        sys.exit(app.exec_())
    

    enter image description here

    关于python - 将 Chrome 标志与 QtWebEngine (PyQt5) 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61816703/

    相关文章:

    python - 类似 select_related 的函数在 RawQuerySet 中不起作用

    python - 当从 QObject 派生的类的属性中引发 AttributeError 时出现误导性错误消息

    python - PyQt5 接收器

    javascript - Node.childNodes的forEach方法?

    python - python 中的 stdtr 在进行 t 检验时为 p 值提供 nan

    python - 基于索引对DataFrame进行分箱

    python - 使用 Python 广播的内存高效 L2 规范

    python - 制作一个可停止的简单秒表

    javascript - 无法使用 chrome 43 beta 设置 xhr.responseType

    node.js - 渲染引擎如何感知资源类型?有解释该过程的文档吗?