如何在 QWebEngineView 中设置背景图像 [重复]

Posted

技术标签:

【中文标题】如何在 QWebEngineView 中设置背景图像 [重复]【英文标题】:How to set a background image in QWebEngineView [duplicate] 【发布时间】:2019-10-21 09:54:05 【问题描述】:

我正在使用来自 QtWebEngineWidgets 的 QWebEngineView 来显示图像,并且我想将其作为背景图像。但它没有显示任何东西。我该怎么做?

我也尝试了 QtWebKitWidgets 中的 QWebView,但它仍然无法正常工作。

这是我的代码:

    view = QtWebEngineWidgets.QWebEngineView()
    html = """
    <html>
        <head>
            <style>
                bodybackground-image:url("D:\\house.jpg");
            </style>
        </head>
        <body></body>
    </html>"""

    view.setHtml(html)

我希望视图显示图像 house.jpg 作为背景,但它只显示一个白色窗口

【问题讨论】:

【参考方案1】:

void QWebEnginePage::setHtml(const QString &html, const QUrl &baseUrl = QUrl())

将此页面的内容设置为 html。 baseUrl 是可选的,用于解析 文档中的相对 URL,例如引用的图像或样式表。

在 Windows 上测试。

import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtCore import QTimer, QDateTime, QUrl

html = """
<html>
  <head>
    <meta charset="utf-8">
    <title>background-image</title>
    <style>
      body 
        background-image: url('file:///D:/_Qt/Python-Examples/_PyQt5/Image/logo.png');
        background-color: #c7b39b;               
      
      p 
        color: #f00;
        font: bold italic 20pt 'Comic Sans MS';
      
    </style>
  </head>
  <body>
    <p>Hello World</p>
  </body>
</html>
"""

def append():
    some_html = "<p></p>".format(QDateTime.currentDateTime().toString())
    page.runjavascript("document.body.innerHTML += ''".format(some_html)
    )


if __name__ == '__main__':
    app = QApplication(sys.argv)

    view = QWebEngineView()

    timer = QTimer()
    timer.timeout.connect(append)
    page = view.page()
    page.loadFinished.connect(lambda: timer.start(1000))

    page.setHtml(html, baseUrl=QUrl('file://'))                   # <---

    view.show()
    sys.exit(app.exec_())

【讨论】:

【参考方案2】:

你必须指定baseUrl

view.setHtml(html, baseUrl='file://')

否则,它不会猜测如何处理D:\\... 地址。 在linux上测试,足以解决问题。

还要注意在 windows 下,\\ 将被解释。为了安全起见,写html = r""" ... """,并将其保存到file.html以进行验证。

【讨论】:

以上是关于如何在 QWebEngineView 中设置背景图像 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

怎样在JFrame中设置背景图片

QT模态对话框用法(在UI文件中设置Widget背景图,这个图是一个带阴影边框的图片——酷)

VB中设置标签背景是不是透明的属性是啥

如何在 loadView 中设置背景颜色?

如何在颤动中设置背景图像?

如何在卡片背景中设置多种不同的颜色