Проблема заключается в положении курсора в окне.
По умолчанию - если вы не укажете некоторые флажки , которые будут переданы в функцию find()
, поиск будет выполняться только вперед (= от позиции курсора и далее).
Для того, чтобы ваш тест работал, вы должны сделать что-то вроде этого:
- Запустить программу.
- Перейдите в окно и введите
BA
- Переместите курсор в начало строки
- Введите
C
Таким образом, в окне вы получите строку CBA
с курсором между C
и B
и строку, с которой будет работать метод find()
, возвращающий True
будет BA
.
В качестве альтернативы вы можете протестировать эту другую версию вашего кода, для которой установлен флаг обратного хода.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from PyQt4.QtCore import QObject, SIGNAL
from PyQt4.QtGui import QApplication, QTextEdit, QTextDocument
app = QApplication(sys.argv)
def findText():
flag = QTextDocument.FindBackward
print(textEdit.toPlainText(), textEdit.find('A', flag))
textEdit = QTextEdit()
textEdit.show()
QObject.connect(textEdit, SIGNAL('textChanged()'), findText)
sys.exit(app.exec_())