从带有富文本的QLabel中获取纯文本

10 投票
2 回答
19063 浏览
提问于 2025-04-17 10:24

我有一个 QLabel,里面包含了丰富的文本格式。
我想从这个 QLabel 中提取出实际可见的“文本”,而不想要任何格式的代码。
我需要一个类似于其他 Qt Widgets'.toPlainText' 方法的功能。

我不能简单地调用 .text() 然后把 HTML 标签去掉,正如这个讨论中提到的 从带有 HTML 标签的 QString 中获取纯文本,因为返回的 QString 包含了所有的 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> 这些无用的东西。

我该如何提取纯文本呢?

(我对任何方法都持开放态度,即使是间接的,比如已有的将 HTML 转换为纯文本的函数)

谢谢!

规格:
python 2.7.2
PyQt4
Windows 7

2 个回答

2

这里有一个比较麻烦的解决办法(适用于Python - PyQt)

def Extract_PlainText(label):
    Rtf_text = label.text()
    Temp_Obj = QtGui.QTextEdit()
    Temp_Obj.setText(Rtf_text)
    Plain_text = Temp_Obj.toPlainText()
    del Temp_Obj
    return Plain_text

这个方法的灵感来源于 这个链接

21

使用一个叫做 QTextDocument 的东西来进行转换:

doc = QtGui.QTextDocument()
doc.setHtml(label.text())
text = doc.toPlainText()

撰写回答