QTextBrowser 是 QTextEdit 的一个固有类,支持带有 css2.1 的 Html,因此您可以使用它,如下例所示。
import sys
from PyQt5 import QtCore, QtWidgets
class Widget(QtWidgets.QWidget):
def __init__(self, *args, **kwargs):
QtWidgets.QWidget.__init__(self, *args, **kwargs)
lay = QtWidgets.QVBoxLayout(self)
self.textBrowser = QtWidgets.QTextBrowser()
lay.addWidget(self.textBrowser)
do_something = {"A": "A", "B": "B"}
cursor = self.textBrowser.textCursor()
for k, v in do_something.items():
cursor.insertHtml('''<p><span style="color: red; font-family:Times; font-style: italic;">{}</span>'''.format(k))
cursor.insertHtml(''':''')
cursor.insertHtml('''<span style="color: blue; font-family:Times; font-style: italic;">{}</span></p>'''.format(v))
cursor.insertHtml("<br>")
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())
要以简单的方式执行此操作,您可以附加样式表。
import sys
from PyQt5 import QtCore, QtWidgets
css = '''
.left{
color: red;
font-family:Times;
font-style: italic;
}
.right{
color: blue;
font-family:Times;
font-style: italic;
}
'''
class Widget(QtWidgets.QWidget):
def __init__(self, *args, **kwargs):
QtWidgets.QWidget.__init__(self, *args, **kwargs)
lay = QtWidgets.QVBoxLayout(self)
self.textBrowser = QtWidgets.QTextBrowser()
lay.addWidget(self.textBrowser)
do_something = {"A": "A", "B": "B"}
cursor = self.textBrowser.textCursor()
doc = self.textBrowser.document()
doc.setDefaultStyleSheet(css)
for k, v in do_something.items():
cursor.insertHtml('''<p><span class='left'>{}</span>'''.format(k))
cursor.insertHtml(''':''')
cursor.insertHtml('''<span class='right'>{}</span></p>'''.format(v))
cursor.insertHtml("<br>")
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())