使用pyqt4在qtextbrowser / qtextedit中设置和获取html文本

时间:2013-08-20 16:40:45

标签: python html qt pyqt4

例如,如果您只是设置

self.textedit.setHtml("<b>Bold text</b>")
htmlCheck=self.textedit.toHtml()

hmtlCheck =

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt;   
font-weight:400; font-style:normal;">
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; 
-qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Bold text</span>
</p>
</body></html>

为什么我不能只从第一个代码行中获取我的设置文本?这个,我得到的,对于进一步编辑是如此糟糕...想象一下,我在这里写了一个更大的文本。我想选择文本并使其变粗,或制作一个列表,并实时检测超链接...我不知道如何解决它,因为我的代码周围有太多垃圾也可以单独使用。并且只有.toPlainText()和.toHtml()函数才有... 超链接的东西非常简单,我只能.setText(...)和.toPlainText()并且每次都在www。和http上运行一个正则表达式。但我也想要一个动态列表功能或粗体,也许,因此不能使用toPlainText()......

有人为我提供了很好的建议吗?

编辑:这里的这个似乎可以设置选定的文本粗体,即使是通过不同的段落:

def setBold(self):
    cur=self.textedit.textCursor()
    if cur.hasSelection():
        font=self.textedit.currentFont()
        font.setWeight(QFont.Bold)
        self.textedit.setCurrentFont(font)

1 个答案:

答案 0 :(得分:1)

您无法获得您设置的确切文本,因为这不是QTextEditor内部存储的内容。出于这个原因,它的方法被称为toHtmltoPlainText而不是getHtml,应该强调返回的是编辑内容的表示,而不是它的确切的内部状态。

如果您想与编辑器进行交互,您应该像描述here

那样进行
  • 使用设计用于编辑(选定)内容的方法
  • 使用编辑器QTextCursor方法返回的textCursor()来更改选择或修改/插入光标处的文本