使用QtWebEngine(PyQt5)的Chrome标志。

问题描述 投票:1回答:1

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

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

如果上面的方法不可行,有没有其他方法可以让铬元素在 QtWebEngineView? 我正在运行 PyQt5.14.2 (Chromium 77), Python 3.8.0, Windows 10

python pyqt5 chromium qtwebengine google-chrome-flags
1个回答
1
投票

要设置Chromium标志可以使用以下方法(参见 "Chromium标志")。文献):

  • 作为参数传递给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支持,这似乎是Qt WebEngine的情况。--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_())

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.