繁体   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