如何在 PyQt4 创建的 GUI 中以富格式显示一些不可编辑的文本?
Posted
技术标签:
【中文标题】如何在 PyQt4 创建的 GUI 中以富格式显示一些不可编辑的文本?【英文标题】:How to display some non editable text in rich format in GUI created by PyQt4? 【发布时间】:2014-08-05 21:42:26 【问题描述】:我有一些 python 代码可以生成一些我希望能够打印或显示在窗口中的信息。
整个窗口将用于显示格式丰富的文本(粗体、斜体、彩色字体、各种字体大小等)。文本也应该是只读的。光标也不应该是可见的。就像在网络浏览器中一样。
我应该为此使用哪个 PyQt 类?如果这可以使用QTextEdit
完成,请告诉我如何将其设置为只读并对文本应用各种格式。如果任何其他 PyQt 类更适合此,请告诉我。
更新:我找到了这个类: http://pyqt.sourceforge.net/Docs/PyQt4/qtextdocument.html 它说
QTextDocument 是结构化富文本文档的容器,支持样式化文本和各种类型的文档元素,例如列表、表格、框架和图像。它们可以创建用于 QTextEdit,也可以独立使用。
直接使用QTextDocument
类而不是QTextEdit
有什么好处吗?
【问题讨论】:
QTextEdit
可以设置为只读。你知道吗?你已经竭尽全力说这对你的应用程序来说不够好,但你还没有说使用QTextEdit
有什么问题。如果没有更多关于为什么 QTextEdit
不好(即使在只读模式下)的详细信息,我无法提出其他建议。
@three_pineapples 非常感谢您让我知道这一点。我已经编辑了这个问题。基本上我只需要一种以只读模式显示文本的方法,它具有丰富的格式(如粗体、斜体等)和不同的字体大小和字体。请查看已编辑的问题。
【参考方案1】:
您可能仍想使用QTextEdit
。 QTextEdit
的实例可以通过以下方式设置为只读:
my_text_edit.setReadOnly(True)
然后您可以使用QTextCursor
s 或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>')
【讨论】:
+1 表示 QTextEdit 的实例可以使用 my_text_edit.setReadOnly(True) 设置为只读。我需要什么。以上是关于如何在 PyQt4 创建的 GUI 中以富格式显示一些不可编辑的文本?的主要内容,如果未能解决你的问题,请参考以下文章