在 QtWebEngine (PyQt5) 中使用 Chrome 标志
Using Chrome flags with QtWebEngine (PyQt5)
对于我的 PyQt5 浏览器项目的开发,我读到 here 通过将 Chrome 标志作为应用程序参数传递,它们将在启动时自动传递到 QtWebEngineProcess.exe
通过代码。我试过 app = QApplication(sys.argv + [--enable-force-dark])
,但这不会使 chromium 以暗模式呈现网页(我也尝试了标志名称的许多变体,所以我认为这不是问题所在)。
我想知道是否可以通过继承 class 和覆盖函数,并连接 QtWebEngineView
到这个 class,所以像 ...("QtWebEngineProcess.exe -[1st flag] -[2nd flag"])
?
如果上述方法不可行,有没有其他方法可以在 QtWebEngineView
中使用带有自定义标志的铬?我是运行PyQt5.14.2 (Chromium 77), Python 3.8.0, Windows 10
可以使用以下方法设置铬标志(参见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 不支持所有铬标志,--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_())
对于我的 PyQt5 浏览器项目的开发,我读到 here 通过将 Chrome 标志作为应用程序参数传递,它们将在启动时自动传递到 QtWebEngineProcess.exe
通过代码。我试过 app = QApplication(sys.argv + [--enable-force-dark])
,但这不会使 chromium 以暗模式呈现网页(我也尝试了标志名称的许多变体,所以我认为这不是问题所在)。
我想知道是否可以通过继承 class 和覆盖函数,并连接 QtWebEngineView
到这个 class,所以像 ...("QtWebEngineProcess.exe -[1st flag] -[2nd flag"])
?
如果上述方法不可行,有没有其他方法可以在 QtWebEngineView
中使用带有自定义标志的铬?我是运行PyQt5.14.2 (Chromium 77), Python 3.8.0, Windows 10
可以使用以下方法设置铬标志(参见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 不支持所有铬标志,--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_())