簡體   English   中英

為什么我的本地 html 加載到 PySide6 QWebEngineView 時無法訪問?

[英]Why my local html is not accessed when I load it into PySide6 QWebEngineView?

我正在學習 Qt6,我寫了一個演示,將本地 html 文件放入其中以測試 QWebEngineView 小部件。 但是,網頁顯示信息:

Your file counldn't be accessed
It may have been moved, edited, or deleted.
ERR_FILE_NOT_FOUND

這是我的test.py源代碼:

import sys

from PySide6.QtWidgets import (QApplication, QWidget, QVBoxLayout)
from PySide6 import QtCore
from PySide6.QtWebEngineWidgets import QWebEngineView


class webView(QWidget):
    def __init__(self):
        super(webView, self).__init__()

        self.layout = QVBoxLayout(self)

        self.webV = QWebEngineView()
        self.fileDir = QtCore.QFileInfo("./docs.html").absoluteFilePath()
        print(self.fileDir)
        self.webV.load(QtCore.QUrl("file:///" + self.fileDir))

        self.layout.addWidget(self.webV)


if __name__ == "__main__":
    app = QApplication([])

    web = webView()
    web.show()

    sys.exit(app.exec())

此外, docs.html已與test.py文件放在同一目錄中。 當我打印web.fileDir ,結果是正確的。

Qt中一般強烈推薦使用qrc文件,以及Qt資源管理系統。 這里: QWebView 可以從 Qt 資源文件加載圖像嗎? 是一個與您的問題類似的小而簡潔的示例。 您也可以查看官方PySide6資源使用情況: https : PySide6

您對 url 進行了硬編碼,路徑可能是錯誤的,在這些情況下,url 最好一步一步來。 我假設 html 在 .py 旁邊,那么解決方案是:

import os
from pathlib import Path
import sys

from PySide6.QtCore import QUrl
from PySide6.QtWidgets import QApplication, QVBoxLayout, QWidget
from PySide6.QtWebEngineWidgets import QWebEngineView


CURRENT_DIRECTORY = Path(__file__).resolve().parent


class webView(QWidget):
    def __init__(self):
        super(webView, self).__init__()

        filename = os.fspath(CURRENT_DIRECTORY / "docs.html")
        url = QUrl.fromLocalFile(filename)

        self.webV = QWebEngineView()
        self.webV.load(url)

        layout = QVBoxLayout(self)
        layout.addWidget(self.webV)


if __name__ == "__main__":
    app = QApplication([])

    web = webView()
    web.show()

    sys.exit(app.exec())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM