Загрузите локальный HTML-файл в QWebView в Python

Вот моя проблема: я хочу загрузить локальный HTML-файл в QWebView в Python. РЕДАКТИРОВАТЬ: я использую 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)

от

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

Работает нормально.

Тем не менее, файл явно находится в хорошем каталоге, и я могу открыть тот же файл непосредственно с помощью моего браузера.

РЕДАКТИРОВАТЬ 2: проблема появляется после обновления на моем Raspberry Pi 2 (который работает с кодом выше)

1 ответ

Два наблюдения:

  • путь должен быть абсолютным (не относительным)
  • использование QUrl.fromLocalFile(path)

так как то так

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_()
Другие вопросы по тегам