【问题标题】:Get Plain text from a QLabel with Rich text从带有富文本的 QLabel 中获取纯文本
【发布时间】:2012-02-12 00:04:00
【问题描述】:

我有一个包含富文本的QLabel
我只想从QLabel 中提取实际(可见)“文本”,而没有任何格式化代码。
我基本上需要一个类似于其他Qt Widgets'.toPlainText' 方法的函数。

我不能简单地调用.text() 并按照该线程Get plain text from QString with HTML tags 中的建议对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
视窗 7

【问题讨论】:

  • 我自己没有尝试过,但看起来QTextCodec 是您需要的(文档位于developer.qt.nokia.com/doc/qt-4.8/qtextcodec.html)。
  • RTF 似乎不是受支持的编码(除非我遗漏了什么)。没关系,我找到了一个乱七八糟的解决方法
  • 你不能把 Qt Rich Text 当作 html 对待吗?此处的 Qt 文档 (doc.qt.nokia.com/4.7-snapshot/qml-text.html) 说:“富文本是使用 HTML 样式标记定义的。”
  • 是的! (QTextCodec 是否支持 html?我只是假设是这样,因为它只有在 GUI 框架支持的情况下才合乎逻辑。我对整个“标记”文本格式业务不是很了解!对不起。)

标签: python qt pyqt pyqt4 qlabel


【解决方案1】:

使用QTextDocument 进行转换:

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

【讨论】:

  • 哦,是的,比我的方法更直接。不好意思我错过了:|
【解决方案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

灵感来自http://bytes.com/topic/net/answers/707370-convert-rtf-plain-text

【讨论】:

  • 当然,'del Temp_Obj' 完全没有必要,但我觉得它很古怪
猜你喜欢
  • 1970-01-01
  • 2016-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多