python - 将 Chrome 标志与 QtWebEngine (PyQt5) 一起使用
问题描述
对于我的 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
解决方案
可以使用以下方法设置铬标志(参见文档):
作为参数传递给 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_())
推荐阅读
- python - 安装了 BS4,但当我从 macos high sierra 运行 python 脚本时得到回溯“ImportError:没有名为 bs4 的模块”
- javascript - Google App Script 将背景从驱动器设置为网络应用程序
- python - PySimleGUI 如何将元素彼此相邻放置,以使它们之间没有空间?
- github - Nextjs 使用 github 操作自动部署到 cpanel
- reactjs - React.js,如何在保持其他属性不变的同时更改地图内对象的一个属性?
- html - CSS - 添加选择下拉选项宽度环绕和滚动
- makefile - GNU 不对丢失的虚假目标发出任何消息
- javascript - 直接变异状态是不好的。创建副本太耗费资源。该怎么办?
- verilog - 在 Verilog 的 for 循环中使用递归赋值
- javascript - Bootstrap 5 Popover 错误 - 找不到名称“bootstrap”