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

标签 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>

为什么我不能只从第一行代码中获取我设置的文本?这个,我得到的,对进一步编辑来说太糟糕了……想象一下,我在里面写了一个更大的文本。我想选择文本并将其设为粗体,或者制作一个列表,并实时检测超链接......当我的代码周围有太多单独工作的垃圾时,我不知道如何处理它.而且 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 内部存储的内容。出于这个原因,它的方法被称为 toHtmltoPlainText 而不是 getHtml,这应该强调返回的是一个表示 的编辑器内容,而不是确切的内部状态。

如果你想与编辑器交互,你应该像描述的那样做 here :

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

关于python - 使用 pyqt4 在 qtextbrowser/qtextedit 中设置和获取 html 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18340526/

相关文章:

javascript - 页面周围的静态框架随着滚动改变颜色

java - 如何使用 java div 类调用唯一文本

qt - QAbstractListModel和QList适配器

python - Discord.py 级别最高的前 5 位用户

python - 在 redshift UDF 中导入用户定义的库

python - 在 python 中计算频率的最干净的方法是什么

python - DataFrame.corr() - 使用相同的重复数据计算 PIL 逊线性相关性?

css - 使 englobing/父 div 与内部 div 一样高

c++ - Qt invokeMethod 和调用静态方法?

C++:使用 CRTP,派生类中定义的类在基类中不可访问