2

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

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

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

4

1 回答 1

2

可以使用以下方法设置铬标志(参见文档):

  • 作为参数传递给 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 并不支持所有 chromium 标志,而--enable-force-dark. 在网上搜索我发现这篇文章提供了另一种选择:--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_())

在此处输入图像描述

于 2020-05-15T23:27:52.900 回答