Получить простой текст из QLabel с Rich Text - PullRequest
7 голосов
/ 17 января 2012

У меня есть QLabel, который содержит форматированный текст.
Я хочу извлечь только фактический (видимый) «текст» из QLabel, а не код для форматирования.
По сути, мне нужна функция, подобная методу '.toPlainText' другого Qt Widgets.

Я не могу просто позвонить .text() и использовать строковые манипуляции с тегами html, как предлагается в этой теме Получить простой текст из QString с тегами HTML , поскольку возвращаемый QString содержит все <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> нонсенс.

Как извлечь простой текст?

(я открыт для любого метода, даже косвенного. Например; уже существующие функции, которые преобразуют HTML в простой текст)

Спасибо!

Технические характеристики:
питон 2.7.2
PyQt4
Windows 7

Ответы [ 2 ]

13 голосов
/ 17 января 2012

Используйте QTextDocument для преобразования:

doc = QtGui.QTextDocument()
doc.setHtml(label.text())
text = doc.toPlainText()
1 голос
/ 17 января 2012

Вот грязная работа (для 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

Вдохновлен http://bytes.com/topic/net/answers/707370-convert-rtf-plain-text

...