我在下面的Python代码中的“”标记内有一些手工编码的HTML,在Chrome中可以正常工作,但是当我在PyQT文本浏览器中显示背景颜色时,背景颜色是意外的。

python - Qt HTML子集-可能的未记录限制-LMLPHP

python - Qt HTML子集-可能的未记录限制-LMLPHP

“更粉红色”行没有粉红色背景。

当我阅读https://doc.qt.io/qtforpython/PySide2/QtWidgets/QTextBrowser.html时,似乎我正在使用的所有功能都被列为已涵盖。但是有些事情仍然是帮派·阿格利。

哪种HTML可以在文本浏览器小部件中实现粉红色背景并延伸到两行?

这是此示例的代码:

from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(364, 284)
        self.horizontalLayout = QtWidgets.QHBoxLayout(Form)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.textBrowser = QtWidgets.QTextBrowser(Form)
        self.textBrowser.setObjectName("textBrowser")
        self.horizontalLayout.addWidget(self.textBrowser)
        self.textBrowser.setHtml(
            """
            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
            <html><head><meta name="qrichtext" content="1" />
            </head>
            <body style=" font-family:'.SF NS Text'; font-size:13pt; font-weight:400; font-style:normal;">
                <p>preliminary text</p>
                <div style = " -qt-block-indent:1;  font-style:italic;  background-color:#fff5f5;  font-style:italic;">
                    background pink
                    <p>more pink</p>
                </div>

                <p> Non pink <\p>
            </body></html>
            """
        )
        self.retranslateUi(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())


我将Qt和PyQt都包含在标签中,因为我认为问题在C ++中将是相同的

最佳答案

QTextBrowser基于QTextDocument,仅支持limited subset of HTML4,而Google Chrome不支持HTML5,因此您可以看到不同之处。如果您想要具有类似于Google Chrome的行为,请使用QWebEngineViewpip install pyqtwebengine):

from PyQt5 import QtWidgets, QtWebEngineWidgets


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)

    html ="""
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
        <html>
            <head>
            <meta name="qrichtext" content="1" />
            </head>
            <body style=" font-family:'.SF NS Text'; font-size:13pt; font-weight:400; font-style:normal;">
                <p>preliminary text</p>
                <div style = " -qt-block-indent:1;  font-style:italic;  background-color:#fff5f5;  font-style:italic;">
                    background pink
                    <p>more pink</p>
                </div>
                <p> Non pink </p>
            </body>
        </html>
            """

    browser = QtWidgets.QTextBrowser()
    browser.setHtml(html)
    view = QtWebEngineWidgets.QWebEngineView()
    view.setHtml(html)

    w = QtWidgets.QWidget()
    lay = QtWidgets.QHBoxLayout(w)
    lay.addWidget(browser, stretch=1)
    lay.addWidget(view, stretch=1)
    w.resize(640, 480)
    w.show()
    sys.exit(app.exec_())


python - Qt HTML子集-可能的未记录限制-LMLPHP
(左侧是QTextBrowser,右侧是QWebEngineView)

07-28 06:54