使用 QtWebEngine (PyQt5) 在深色模式下渲染页面

Render pages in dark mode with QtWebEngine (PyQt5)

提问人:Thomas 提问时间:2/23/2023 最后编辑:Thomas 更新时间:2/24/2023 访问量:206

问:

我正在尝试使用QtWebEngine以深色模式呈现网站。我不知道该怎么做,我发现了这个 Stack Overflow 问题,它似乎可以解决我的问题。这个人试图使用chrome标志,他们有一个公认的答案,使用了这些标志。以下是接受的答案提供的代码:

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_())

下面是使用此代码在深色模式下渲染的谷歌图像:Google rendered in dark mode

看起来使用的操作系统确实不是 Windows(这是我正在使用的),所以这可能是问题所在。此代码不再起作用,并在没有深色模式的情况下呈现网页,如下所示:Google rendered without dark mode

在写这个问题时,我还遇到了另一个 Stack Overflow 问题,问的和我一样。这个问题目前没有答案,并且已经在这个网站上存在了 6 个月。有人对如何做到这一点有任何想法吗?我将不胜感激。

编辑:

在询问 ChatGPT 看看它是否有帮助后,我得到了以下代码(是的,我知道 ChatGPT 并不总是正确的并且在这个网站上被禁止,我假设这个禁令是为了回答问题):

from PyQt5.QtCore import Qt, QUrl
from PyQt5.QtGui import QColor, QPalette
from PyQt5.QtWebKit import QWebSettings
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebKitWidgets import QWebView

app = QApplication([])

# Enable the Force Dark Mode flag
settings = QWebSettings.globalSettings()
settings.setAttribute(QWebSettings.ForceDarkColors, True)

# Create the web browser
browser = QWebView()
browser.load(QUrl("https://www.google.com/"))

# Set the dark color palette for the web browser
palette = QPalette()
palette.setColor(QPalette.Window, QColor(53, 53, 53))
palette.setColor(QPalette.WindowText, Qt.white)
browser.setPalette(palette)

# Show the web browser
browser.show()

# Run the application event loop
app.exec_()

这段代码给了我错误。在查找此错误的解决方案后,我发现了这个 Stack Overflow 问题。本质上:ModuleNotFoundError: No module named 'PyQt5.QtWebKit'

QtWebKit 在 Qt 5.5 的上游被弃用,并在 5.6 中被删除。

如果生成的这段代码使用 chrome 标志,那么我假设它们不能再用于实现这一点是否正确?

python windows pyqt pyqt5 qtwebengine

评论

0赞 musicamante 2/23/2023
请注意,如果您发现另一个与您的问题相匹配的问题,您可以考虑为它开设赏金

答: 暂无答案