Шаг 115.
Библиотека PyQt5. Основные компоненты. Многострочное текстовое поле. Класс QTextCursor (окончание)
На этом шаге мы перечислим основные методы этого класса.
Класс QTextCursor поддерживает следующие методы (здесь приведены только основные - полный их список
доступен на странице https://doc.qt.io/qt-5/qtextcursor.html):
- isNull () - возвращает значение True, если объект курсора является нулевым (создан
с помощью конструктора без параметра), и False - в противном случае;
- setPosition (<Позиция>[, mode=MoveAnchor]) - перемещает текстовый курсор внутри
документа. В первом параметре указывается позиция внутри документа. Необязательный параметр mode аналогичен
одноименному параметру в методе moveCursor() класса QTextEdit (смотри предыдущий шаг);
- movePosition (<Позиция> [, mode=MoveAnchor] [, n=l]) - перемещает текстовый курсор
внутри документа. Параметры <Позиция> и mode аналогичны одноименным параметрам
в методе moveCursor() класса QTextEdit. Необязательный параметр n позволяет указать количество
перемещений - например, переместить курсор на 10 символов вперед можно так:
cur = textEdit.textCursor()
cur.movePosition(QtGui.QTextCursor.NextCharacter,
mode=QtGui.QTextCursor.MoveAnchor, n=10)
textEdit.setTextCursor(cur)
Метод movePosition () возвращает значение True, если операция успешно выполнена указанное количество раз.
Если было выполнено меньшее количество перемещений (например, из-за достижения конца документа), метод
возвращает значение False;
- position () - возвращает позицию текстового курсора внутри документа;
- positionInBlock () - возвращает позицию текстового курсора внутри блока;
- block () - возвращает экземпляр класса QTextBlock, который описывает текстовый
блок, содержащий курсор;
- blockNumber () - возвращает номер текстового блока, содержащего курсор;
- atStart () - возвращает значение True, если текстовый курсор находится в начале документа, и False - в противном случае;
- atEnd () - возвращает значение True, если текстовый курсор находится в конце документа, и False - в противном случае;
- atBlockStart () - возвращает значение True, если текстовый курсор находится в начале
блока, и False - в противном случае;
- atBlockEnd () - возвращает значение True, если текстовый курсор находится в конце
блока, и False - в противном случае;
- select (<Режим>) - выделяет фрагмент в документе в соответствии с указанным режимом.
В качестве параметра можно указать следующие атрибуты класса QTextCursor:
- WordUnderCursor (или 0) - выделяет слово, в котором расположен курсор;
- LineUnderCursor (или 1) - выделяет строку, в которой расположен курсор;
- BlockUnderCursor (или 2) - выделяет текстовый блок, в котором находится курсор;
- Document (или 3) - выделяет весь документ;
- hasSelection() - возвращает значение True, если существует выделенный фрагмент,
и False - в противном случае;
- hasСomplexSelection () - возвращает значение True, если выделенный фрагмент содержит сложное
форматирование, а не просто текст, и False - в противном случае;
- clearSelection () - снимает выделение;
- selectionStart () - возвращает начальную позицию выделенного фрагмента;
- selectionEnd () - возвращает конечную позицию выделенного фрагмента;
- selectedText () - возвращает текст выделенного фрагмента;
Замечание.
Если выделенный фрагмент занимает несколько строк, то вместо символа перевода строки вставляется символ с кодом
\u2029. Попытка вывести этот символ в окно консоли приведет к исключению, поэтому следует произвести замену символа с помощью метода
replace():
print(cur.selectedText().replace("\u2029", "\n"))
- selection () - возвращает экземпляр класса QTextDocumentFragment, который описывает
выделенный фрагмент. Получить текст позволяют методы toPlainText() (возвращает
простой текст) и toHtml() (возвращает текст в формате HTML) этого класса;
- removeSelectedText () - удаляет выделенный фрагмент;
- deleteChar () - если нет выделенного фрагмента, удаляет символ справа от курсора,
в противном случае удаляет выделенный фрагмент;
- deletePreviousChar () - если нет выделенного фрагмента, то удаляет символ слева от
курсора, в противном случае удаляет выделенный фрагмент;
- beginEditBlock () и endEditBiock () - задают начало и конец блока инструкций. Эти
инструкции могут быть отменены или повторены как единое целое с помощью методов
undo() и redo();
- joinPreviousEditBlock () - делает последующие инструкции частью предыдущего блока инструкций;
- setKeepPositionOnInsert (<Флаг>) - если в качестве параметра указано значение True,
то после операции вставки курсор сохранит свою предыдущую позицию. По умолчанию
позиция курсора при вставке изменяется;
- insertText (<Текст>[, <QTextCharFormat>]) - вставляет простой текст;
- insertHtml (<Текст>) - вставляет текст в формате HTML.
С помощью методов insertBlock(), insertFragment(), insertFrame(), insertImage(), insertList() и insertTable()
можно вставить различные элементы: изображения, списки и др. Изменить формат выделенного фрагмента
позволяют методы mergeBlockCharFormat(), mergeBlockFormat() и mergeCharFormat(). За подробной
информацией по этим методам обращайтесь к странице
https://doc.qt.io/qt-5/qtextcursor.html
документации.
На следующем шаге мы рассмотрим текстовый браузер.
Предыдущий шаг
Содержание
Следующий шаг