gpt4 book ai didi

python-3.x - 在 PySide.QTextEdit 中突出显示文本

转载 作者:行者123 更新时间:2023-12-05 05:27:31 25 4
gpt4 key购买 nike

我想在 PySide 的 QTextEdit 中显示的文本中突出显示一个词,我发现 this answer对于 PyQt 非常好并且可以工作,但是它不能在 PySide 的 QTextEdit 上工作。

有人知道 PySide 的问题是什么吗?

这是我上面提到的答案中的代码:

from PyQt4 import QtGui
from PyQt4 import QtCore

class MyHighlighter(QtGui.QTextEdit):
def __init__(self, parent=None):
super(MyHighlighter, self).__init__(parent)
# Setup the text editor
text = """In this text I want to highlight this word and only this word.\n""" +\
"""Any other word shouldn't be highlighted"""
self.setText(text)
cursor = self.textCursor()
# Setup the desired format for matches
format = QtGui.QTextCharFormat()
format.setBackground(QtGui.QBrush(QtGui.QColor("red")))
# Setup the regex engine
pattern = "word"
regex = QtCore.QRegExp(pattern)
# Process the displayed document
pos = 0
index = regex.indexIn(self.toPlainText(), pos)
while (index != -1):
# Select the matched text and apply the desired format
cursor.setPosition(index)
cursor.movePosition(QtGui.QTextCursor.EndOfWord, 1)
cursor.mergeCharFormat(format)
# Move to the next match
pos = index + regex.matchedLength()
index = regex.indexIn(self.toPlainText(), pos)

if __name__ == "__main__":
import sys
a = QtGui.QApplication(sys.argv)
t = MyHighlighter()
t.show()
sys.exit(a.exec_())

它完全适用于 PyQt,但当我将导入更改为 PySide 时,它​​会停止突出显示单词。

最佳答案

我发现在 PySide 中,movePosition 方法需要 3 个参数,如果此方法如下所示,代码将是正确的:

cursor.movePosition(QtGui.QTextCursor.EndOfWord, QtGui.QTextCursor.KeepAnchor, 1)

关于python-3.x - 在 PySide.QTextEdit 中突出显示文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19231782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com