найти в txt / qt обычный текст / python - PullRequest
0 голосов
/ 10 октября 2019

Hy,

У меня есть текстовый файл, который я загружаю в виджете интерфейса простого текста qt (я работаю с python).

Я определяю функцию "поиска",но у меня проблема:

Если слово, которое я ищу, выше моего последнего поиска, оно ничего не находит. Я прочитал, что мне нужно поместить курсор в начало текста, но невозможно найти пример, и все мои тесты провалились.

Вот мой код:

def search_in_txt(self):
    txt_to_search = self.lineEdit.text()
    try:
        result = self.plainTextEdit_2.find(txt_to_search)

        if result == False:
            # move cursor to the beginning and restart search
            self.plainTextEdit_2.textCursor.movePosition(QTextCursor_MoveOperation=Start)
            self.plainTextEdit_2.find(txt_to_search)
    except:
        self.statusbar.showMessage("This is the last iteration founded")
    return

Спасибо за вашу помощь, я схожу с ума! Разве в функции «Найти» нет опции, позволяющей перезапускаться с начала, когда он прибывает в конец документа?

Ответы [ 2 ]

1 голос
/ 11 октября 2019

Хорошо, я понял! вместо textCursor.moveposition должно использоваться следующее решение:

def search_in_txt(self):
    txt_to_search = self.lineEdit.text()
    try:
        result = self.plainTextEdit_2.find(txt_to_search)

        if result == False:
            # move cursor to the beginning and restart search
            self.plainTextEdit_2.moveCursor(QtGui.QTextCursor.Start)
            self.plainTextEdit_2.find(txt_to_search)
    except:
        self.statusbar.showMessage("This is the last iteration founded")
    return    
0 голосов
/ 10 октября 2019

Я не уверен в перезапуске с начала, но вы можете использовать флаг для поиска в обратном направлении. В вашем случае:

if result == False:
        self.plainTextEdit_2.find(txt_to_search, QTextDocument.FindBackward)

Или попробуйте с самого начала:

self.plainTextEdit_2.textCursor.movePosition(QTextCursor.Start)
self.plainTextEdit_2.find(txt_to_search)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...