PyQt4 QTextCursor изменить выбираемый символ

Как изменить выбираемые символы QTextCursor, например добавить точку? Например, ввод «MyClass» в QPlainTextEdit строфы

tc = self.textCursor()
tc.select(QtGui.QTextCursor.WordUnderCursor)
return tc.selectedText()

вернет «MyClass», но введя «MyClass». will возвращает пустую строку Qstring! Проблема сохраняется, ввод «MyClass.myMeth» просто возвращает «myMeth», но мне нужно «MyClass.myMeth»: / Спасибо


person LionelR    schedule 22.05.2015    source источник
comment
Поведение зависит от положения курсора. Если после точки, ничего не будет выбрано; если перед точкой, будет выбрана точка; и если это где-нибудь еще, будет выбран MyClass. Таким образом, WordUnderCursor имеет очень плохое имя, поскольку явно не выбирает слова (или, по крайней мере, не только слова). То, что он делает, это выбирает прогоны символов между границами, хотя неясно, как определяются границы.   -  person ekhumoro    schedule 22.05.2015


Ответы (1)


Хорошо, я нахожу решение, заменив вызов WordUnderCursor на:

def textUnderCursor(self):
        tc = self.textCursor()
        isStartOfWord = False
        if tc.atStart() or (tc.positionInBlock() == 0):
            isStartOfWord = True
        while not isStartOfWord:
            tc.movePosition(QtGui.QTextCursor.PreviousCharacter, QtGui.QTextCursor.KeepAnchor)
            if tc.atStart() or (tc.positionInBlock() == 0):
                isStartOfWord = True
            elif QtCore.QChar(tc.selectedText()[0]).isSpace():
                isStartOfWord = True
        return tc.selectedText().trimmed()
person LionelR    schedule 24.05.2015