从带有富文本的QLabel中获取纯文本
我有一个 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()