Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Highlighting text in PySide.QTextEdit

I want to highlight a word in a text shown that is shown in a QTextEdit of PySide and I find this answer for PyQt quite good and working but it's not working on the QTextEdit from PySide.

Does anyone know what's the problem in here with PySide?

This is the code from the answer I mentioned above:

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_())

It completely works with PyQt but when I change the imports to PySide it stops highlighting words.

like image 444
H4iku Avatar asked Dec 06 '25 13:12

H4iku


1 Answers

I found out that in PySide the method movePosition needs 3 argumnets and the code will be correct if this method goes like this:

cursor.movePosition(QtGui.QTextCursor.EndOfWord, QtGui.QTextCursor.KeepAnchor, 1)
like image 65
H4iku Avatar answered Dec 08 '25 19:12

H4iku



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!