如何在 PyQt5 窗口中渲染 HTML?[复制]

How to render HTML in PyQt5 window? [duplicate]

提问人:Jaimee-lee Lincoln 提问时间:2/20/2023 更新时间:2/20/2023 访问量:364

问:

我是使用 PyQt5 创建 GUI 的新手,我想我需要帮助。

我正在尝试创建一个简单的窗口来呈现一个简单的 html 文件。但是,当我使用下面的代码时,窗口会渲染,但中央小部件/整个窗口都是空的。我是否错过了允许显示 HTML 的步骤?

使用 vscode 中的调试器模式,我已经能够找出可能成功做某事的方法。它包含 ,所以我假设这可能是我的 h1 和 p 元素。view.load()DrawChildren: 2

我错过了什么?

simple_test.html

<!DOCTYPE html>
<html>
<body>

<h1>My First Heading</h1>
<p>My first paragraph.</p>

</body>
</html>

Python 脚本

from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5 import QtWebEngineWidgets
import sys
import os

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("Feelings App Prototype")
        
        view = QtWebEngineWidgets.QWebEngineView()
        view.load(QUrl('html_files\\simple_test.html'))

        self.setCentralWidget(view)

app = QApplication(sys.argv)


window = MainWindow()
window.show()


app.exec()```
python html pyqt5 qtwebengine qwebengine查看

评论

1赞 musicamante 2/20/2023
您必须使用 QUrl.fromLocalPath(),可能带有绝对路径(即使动态构造)。请注意,如果您不需要高级和现代的 HTML 功能,请考虑使用更有限但相当小(在内存和要求方面)的 QTextEdit

答:

0赞 Alexander 2/20/2023 #1

对于本地 html 文件,您可以读取该文件并使用视图的方法。setHtml

from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5 import QtWebEngineWidgets
from pathlib import Path
import sys
import os

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("Feelings App Prototype")
        
        view = QtWebEngineWidgets.QWebEngineView()
        html = Path('html_files\\simple_test.html').read_text(encoding="utf8")
        view.setHtml(html)
        self.setCentralWidget(view)

app = QApplication(sys.argv)


window = MainWindow()
window.show()


app.exec()
-1赞 Muhammad Ismail 2/20/2023 #2

本文中,您将了解如何在 PyQt5 对话框 python GUI 中添加或渲染 HTML 文件。这是参考资料,阅读它,它会对你有所帮助。