如何在PyQt4创建的GUI中以富文本格式显示不可编辑文本?
我有一些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>')