用Python将本地HTML文件加载到QWebView中

5
这里是我的问题:我想在Python中将本地html文件加载到QWebView。编辑:我使用PySide作为Qt包。 我的代码:
class myWindow(QWidget):
    def __init__(self, parent=None):
        self.view = QWebView(self)
        filepath = "file://" + os.path.join(os.path.dirname(__file__), 'googlemap.html')
        self.view.load(QUrl(filepath))

这里需要翻译的内容如下:

这只是显示一个空白小部件。 如果我更改

self.view.load(QUrl(filepath)

by

self.view.load(QUrl("http://www.google.com/"))

它可以正常工作。

然而,文件显然在正确的目录中,我可以直接在浏览器中打开同一文件。

编辑2: 问题出现在我的树莓派2上进行更新后(运行上述代码)。


你尝试过使用 setUrl() 而不是 load() 吗? - IAmInPLS
是的,我做了。但还是不起作用。谢谢你。 - Stef
1个回答

11

两个观察点:

因此类似这样:

file_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "aa.html"))
local_url = QUrl.fromLocalFile(file_path)
browser.load(local_url)

应该可以工作。

完整示例:

from PyQt4.QtWebKit import QWebView
from PyQt4.QtGui import QApplication
from PyQt4.QtCore import QUrl
import sys
import os

app = QApplication(sys.argv)

browser = QWebView()
file_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "aa.html"))
local_url = QUrl.fromLocalFile(file_path)
browser.load(local_url)

browser.show()

app.exec_()

谢谢您的回答,但是它没有起作用... 当我打印local_url时,我得到了正确的文件路径 顺便说一下,我省略了我使用PySide - Stef
你的文件是否为有效的HTML?我对Pyside不太熟悉,但通常来讲应该可以工作。你尝试过打印你的URL吗?如果你在浏览器中打印URL并点击它,它能正常打开吗?你应该真正地发布你的完整代码以便于重现问题(包括导入),你可以看到有不同的Python QT包装器,还有不同的QT版本,这可能与你的问题有关。 - Pawel Miech
是的,我确实在Web浏览器中直接编写了URL并且它可以工作。虽然,我不认为我的代码的其他部分是原因,因为该程序在两周前之前一直运行良好。我认为可能是我的机器(树莓派2)上的更新导致了故障。 - Stef
嗯,这是重要的细节。将所有这些添加到你的问题中,我相信会有人能够帮助你。 - Pawel Miech
1
这可能对楼主没有帮助,但对于那些像我一样偶然遇到同样问题的人来说,只有当我要加载的文件以 .html 后缀结尾时,才能正常工作,否则它会加载一个空白页面。 - jrel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接