无法使用 QWebEngineView.setHtml() 加载 HTML 文件

Posted

技术标签:

【中文标题】无法使用 QWebEngineView.setHtml() 加载 HTML 文件【英文标题】:Cannot load HTML file with QWebEngineView.setHtml() 【发布时间】:2017-12-06 16:57:08 【问题描述】:

我的问题的解决方案可能很简单,但我无法理解。我正在尝试使用 PyQt5 将 html 文件加载到 QWebEngineView 中。我的做法是:

self.webView = QtWebEngineWidgets.QWebEngineView(self.splitter)
html = r"C:\DATI\git\webgis\map.html"
self.webView.setHtml(html)

我唯一得到的是一个代表我的 HTML 文件的路径和名称的字符串:

C:\DATI\git\webgis\map.html

我的 map.html 看起来像这样:

<html>
  <head>
    <title>Simple Map</title>
    <link rel="stylesheet" href="https://openlayers.org/en/v4.5.0/css/ol.css" type="text/css">
    <!-- The line below is only needed for old environments like Internet Explorer and android 4.x -->
    <script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=requestAnimationFrame,Element.prototype.classList,URL"></script>
    <script src="https://openlayers.org/en/v4.5.0/build/ol.js"></script>
    <script src=".js/qwebchannel.js"></script>
    <style>
        body  padding: 0; margin: 0; 
        html, body, #map  height: 100%; 
    </style>
  </head>
  <body>
    <div id="map" class="map"></div>
    <script  src="./js/map.js"></script>
  </body>
</html>

奇怪的是(至少对我来说),如果我这样做 self.webView.setHtml("&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;h1&gt;ciao&lt;/h1&gt;&lt;/body&gt;&lt;/html&gt;"),这将正确呈现 HTML。

我错过了什么?

【问题讨论】:

【参考方案1】:

setHtml method 完全符合其名称的含义:它从字符串加载 html 内容。您要做的是加载一个 url,因此,您需要使用 load method:

url = QtCore.QUrl.fromLocalFile(r"C:\DATI\git\webgis\map.html")
self.webView.load(url)

【讨论】:

以上是关于无法使用 QWebEngineView.setHtml() 加载 HTML 文件的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 StorageClass 配置卷 - 无法获取存储帐户的存储密钥

Worklight Studio 和本地开发,有时无法使用 Java 类,有时无法使用 HTML 文件

ADB无法使用解决办法

Ubuntu 80端口无法使用-非root用户无法使用1024以下端口

无法在 SQL Server 视图中使用工作查询:“IS”无法识别“>”无法识别

LINUX下的mail\mailx为啥无法使用外部SMTP发邮件