Использование флагов Chrome с QtWebEngine (PyQt5)

При разработке моего проекта браузера PyQt5 я прочитал здесь, что, передавая флаги Chrome в качестве аргументов приложения, они автоматически передаются вQtWebEngineProcess.exeкогда он запускается кодом. Я пробовал делать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

1 ответ

Решение

Установить флаги хрома можно следующими способами (см. Документацию):

  • Передайте в качестве аргументов 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, и, похоже, это относится к --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_())

Другие вопросы по тегам