例如如果你只是设置
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>
为什么我不能只从第一行代码中获取我设置的文本?这个,我得到的,对进一步编辑来说太糟糕了……想象一下,我在里面写了一个更大的文本。我想选择文本并将其设为粗体,或者制作一个列表,并实时检测超链接......当我的代码周围有太多单独工作的垃圾时,我不知道如何处理它.而且 afaik 只有 .toPlainText() 和 .toHtml() 函数...... 超链接非常简单,我可以只使用 .setText(...) 和 .toPlainText() 并在所有 www.'s 和 http's 上每次运行正则表达式。但我也想要一个动态列表功能或粗体,也许,因此不能使用 toPlainText()...
有什么好的建议可以给我吗?
编辑:这里的这个似乎可以将选定的文本设置为粗体,即使是在不同的段落中也是如此:
def setBold(self):
cur=self.textedit.textCursor()
if cur.hasSelection():
font=self.textedit.currentFont()
font.setWeight(QFont.Bold)
self.textedit.setCurrentFont(font)
最佳答案
您无法获得您设置的确切文本,因为那不是 QTextEditor 内部存储的内容。出于这个原因,它的方法被称为 toHtml
和 toPlainText
而不是 getHtml
,这应该强调返回的是一个表示 的编辑器内容,而不是确切的内部状态。
如果你想与编辑器交互,你应该像描述的那样做 here :
- 使用设计的方法来编辑(选定的)内容
- 使用
QTextCursor
编辑返回textCursor()
在光标处更改选择或修改/插入文本的方法
关于python - 使用 pyqt4 在 qtextbrowser/qtextedit 中设置和获取 html 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18340526/