如何在PyQt4创建的GUI中以富文本格式显示不可编辑文本?

9 投票
1 回答
26462 浏览
提问于 2025-04-18 16:09

我有一些Python代码,它可以生成一些信息,我想把这些信息打印出来或者在一个窗口中显示。

这个窗口将用来显示带有丰富格式的文本,比如加粗、斜体、彩色字体、不同的字体大小等等。文本应该是只读的,也就是说用户不能修改它。而且光标也不应该可见,就像在网页浏览器里那样。

我应该使用哪个PyQt类来实现这个功能呢?如果可以用QTextEdit来完成,请告诉我怎么让它变成只读的,并且如何给文本应用各种格式。如果有其他更合适的PyQt类,请告诉我。

更新:我找到了这个类: http://pyqt.sourceforge.net/Docs/PyQt4/qtextdocument.html 上面说:

QTextDocument是一个用于结构化富文本文档的容器,支持样式化文本和各种类型的文档元素,比如列表、表格、框架和图片。它们可以在QTextEdit中使用,也可以独立使用。

直接使用QTextDocument类有什么好处吗,而不是直接使用QTextEdit呢?

1 个回答

20

你可能还是想使用 QTextEdit。你可以通过以下方式让 QTextEdit 的实例变为只读:

my_text_edit.setReadOnly(True)

然后你可以使用 QTextCursor 来插入或追加文本,或者使用 setHtml() 来设置整个文本编辑器的内容。这里的格式语法是基本的 HTML,比如 <b> 等等。你可以在这里了解更多相关内容:http://qt-project.org/doc/qt-4.8/qtextedit.html#using-qtextedit-as-a-display-widget

一个简单的例子是

my_text_edit.textCursor().insertHtml('normal text')
my_text_edit.textCursor().insertHtml('<b>bold text</b>')

撰写回答