ээдд. Прохоренок_Н_А__Дронов_В_А_Python_3_и_PyQt_5_Разработка_приложен. Николай Прохоренок Владимир Дронов
Скачать 7.92 Mb.
|
False — невозможность сделать это. 21.6.2. Изменение параметров поля Задать другие параметры поля можно вызовами следующих методов класса QTextEdit (пол- ный их список смотрите на странице https://doc.qt.io/qt-5/qtextedit.html): setTextInteractionFlags(<Режим>) — задает режим взаимодействия пользователя с тек- стом. Можно указать следующие атрибуты (или их комбинацию через оператор | ) клас- са QtCore.Qt : • NoTextInteraction — 0 — пользователь не может взаимодействовать с текстом; • TextSelectableByMouse — 1 — текст можно выделить мышью; • TextSelectableByKeyboard — 2 — текст можно выделить с помощью клавиатуры. Внутри поля будет отображен текстовый курсор; 472 Часть II. Библиотека PyQt 5 • LinksAccessibleByMouse — 4 — на гиперссылках, присутствующих в тексте, можно щелкать мышью; • LinksAccessibleByKeyboard — 8 — с гиперссылками, присутствующими в тексте, можно взаимодействовать с клавиатуры: перемещаться между гиперссылками — с помощью клавиши • TextEditable — 16 — текст можно редактировать; • TextEditorInteraction — комбинация TextSelectableByMouse | TextSelectableByKeyboard | TextEditable ; • TextBrowserInteraction — комбинация TextSelectableByMouse | LinksAccessibleByMouse | LinksAccessibleByKeyboard ; setReadOnly(<Флаг>) — если в качестве параметра указано значение True , поле будет доступно только для чтения; isReadOnly() — возвращает значение True , если поле доступно только для чтения, и False — в противном случае; setLineWrapMode(<Режим>) — задает режим переноса строк. В качестве значения могут быть указаны следующие атрибуты класса QTextEdit : • NoWrap — 0 — перенос строк не производится; • WidgetWidth — 1 — перенос строк при достижении ими ширины поля; • FixedPixelWidth — 2 — перенос строк при достижении ими фиксированной ширины в пикселах, которую можно задать с помощью метода setLineWrapColumnOrWidth() ; • FixedColumnWidth — 3 — перенос строк при достижении ими фиксированной шири- ны в символах, которую можно задать с помощью метода setLineWrapColumnOrWidth() ; setLineWrapColumnOrWidth(<Значение>) — задает фиксированную ширину строк, при достижении которой будет выполняться перенос; setWordWrapMode(<Режим>) — задает режим переноса по словам. В качестве значения могут быть указаны следующие атрибуты класса QTextOption из модуля QtGui : • NoWrap — 0 — перенос по словам не производится; • WordWrap — 1 — перенос строк только по словам; • ManualWrap — 2 — аналогичен режиму NoWrap ; • WrapAnywhere — 3 — перенос строки может быть внутри слова; • WrapAtWordBoundaryOrAnywhere — 4 — по возможности перенос по словам, но может быть выполнен и перенос внутри слова; setOverwriteMode(<Флаг>) — если в качестве параметра указано значение True , вводи- мый текст будет замещать ранее введенный. Значение False отключает замещение; overwriteMode() — возвращает значение True , если вводимый текст замещает ранее вве- денный, и False — в противном случае; setAutoFormatting(<Режим>) — задает режим автоматического форматирования. В каче- стве значения могут быть указаны следующие атрибуты класса QTextEdit : • AutoNone — автоматическое форматирование не используется; • AutoBulletList — автоматическое создание маркированного списка при вводе поль- зователем в начале строки символа * ; Глава 21. Основные компоненты 473 • AutoAll — включить все режимы. На данный момент эквивалентно режиму AutoBulletList ; setCursorWidth(<Ширина>) — задает ширину текстового курсора; setTabChangesFocus(<Флаг>) — если параметром передать значение False , то с помощью нажатия клавиши True , клавиша setTabStopWidth(<Ширина>) — задает ширину табуляции в пикселах; tabStopWidth() — возвращает ширину табуляции в пикселах. 21.6.3. Указание параметров текста и фона Для изменения параметров текста и фона предназначены следующие методы класса QTextEdit (полный их список смотрите на странице https://doc.qt.io/qt-5/qtextedit.html): setCurrentFont( — задает текущий шрифт. Метод является слотом. В качестве параметра указывается экземпляр класса QFont из модуля QtGui . Конструктор этого класса имеет следующий формат: <Шрифт> = QFont(<Название шрифта>[, pointSize=-1][, weight=-1] [, italic=False]) В первом параметре задается название шрифта в виде строки. Необязательный параметр pointSize устанавливает размер шрифта. В параметре weight можно указать степень жирности шрифта: число от 0 до 99 или значение атрибутов Light , Normal , DemiBold , Bold или Black класса QFont . Если в параметре italic указано значение True , шрифт будет курсивным; currentFont() — возвращает экземпляр класса QFont с текущими характеристиками шрифта; setFontFamily(<Название шрифта>) — задает название текущего шрифта. Метод являет- ся слотом; fontFamily() — возвращает название текущего шрифта; setFontPointSize(<Размер>) — задает размер текущего шрифта. Метод является слотом; fontPointSize() — возвращает размер текущего шрифта; setFontWeight(<Жирность>) — задает жирность текущего шрифта. Метод является сло- том; fontWeight() — возвращает жирность текущего шрифта; setFontItalic(<Флаг>) — если в качестве параметра указано значение True , шрифт бу- дет курсивным. Метод является слотом; fontItalic() — возвращает True , если шрифт курсивный, и False — в противном слу- чае; setFontUnderline(<Флаг>) — если в качестве параметра указано значение True , текст будет подчеркнутым. Метод является слотом; fontUnderline() — возвращает True , если текст подчеркнутый, и False — в противном случае; setTextColor( — задает цвет текущего текста. В качестве значения можно ука- зать атрибут класса QtCore.Qt (например, black , white и т. д.) или экземпляр класса 474 Часть II. Библиотека PyQt 5 QColor из модуля QtGui (например, QColor("red") , QColor("#ff0000") , QColor(255, 0, 0) и др.). Метод является слотом; textColor() — возвращает экземпляр класса QColor с цветом текущего текста; setTextBackgroundColor( — задает цвет фона. В качестве значения можно ука- зать атрибут из класса QtCore.Qt (например, black , white и т. д.) или экземпляр класса QColor (например, QColor("red") , QColor("#ff0000") , QColor(255, 0, 0) и др.). Метод является слотом; textBackgroundColor() — возвращает экземпляр класса QColor с цветом фона; setAlignment(<Выравнивание>) — задает горизонтальное выравнивание текста внутри абзаца (допустимые значения мы рассматривали в разд. 20.2). Метод является слотом; alignment() — возвращает значение выравнивания текста внутри абзаца. Задать формат символов можно также с помощью класса QTextCharFormat , который опреде- лен в модуле QtGui и поддерживает дополнительные настройки. После создания экземпляра класса его следует передать в метод setCurrentCharFormat( . Получить экземпляр класса с текущими настройками позволяет метод currentCharFormat() . За под- робной информацией по классу QTextCharFormat обращайтесь к странице https://doc.qt.io/ qt-5/qtextcharformat.html. 21.6.4. Класс QTextDocument Класс QTextDocument из модуля QtGui представляет документ, который отображается в мно- гострочном текстовом поле. Получить ссылку на текущий документ позволяет метод document() класса QTextEdit . Установить новый документ можно с помощью метода setDocument( . Иерархия наследования: QObject — QTextDocument Конструктор класса QTextDocument имеет два формата: <Объект> = QTextDocument([parent=<Родитель>]) <Объект> = QTextDocument(<Текст>[, parent=<Родитель>]) В параметре parent указывается ссылка на родительский компонент. Параметр <Текст> по- зволяет задать простой текст (не в HTML-формате), который будет отображен в текстовом поле. Класс QTextDocument поддерживает следующий набор методов (полный их список смотрите на странице https://doc.qt.io/qt-5/qtextdocument.html): setPlainText(<Текст>) — помещает в документ простой текст; setHtml(<Текст>) — помещает в документ текст в формате HTML; toPlainText() — возвращает простой текст, содержащийся в документе; toHtml([ — возвращает текст в формате HTML. В качестве параметра можно указать кодировку документа, которая будет выведена в теге ; clear() — удаляет весь текст из документа; isEmpty() — возвращает значение True , если документ пустой, и False — в противном случае; setModified(<Флаг>) — если передано значение True , документ помечается как изме- ненный, если False — как неизмененный. Метод является слотом; Глава 21. Основные компоненты 475 isModified() — возвращает значение True , если документ был изменен, и False — в противном случае; undo() — отменяет последнюю операцию ввода пользователем при условии, что отмена возможна. Метод является слотом; redo() — повторяет последнюю отмененную операцию ввода пользователем, если это возможно. Метод является слотом; isUndoAvailable() — возвращает значение True , если можно отменить последнюю опе- рацию ввода, и False — в противном случае; isRedoAvailable() — возвращает значение True , если можно повторить последнюю отмененную операцию ввода, и False — в противном случае; setUndoRedoEnabled(<Флаг>) — если в качестве параметра указано значение True , то операции отмены и повтора действий разрешены, а если False — то запрещены; isUndoRedoEnabled() — возвращает значение True , если операции отмены и повтора действий разрешены, и False — если запрещены; availableUndoSteps() — возвращает количество возможных операций отмены; availableRedoSteps() — возвращает количество возможных повторов отмененных опе- раций; clearUndoRedoStacks([stacks=UndoAndRedoStacks]) — очищает список возможных от- мен и/или повторов. В качестве параметра можно указать следующие атрибуты класса QTextDocument : • UndoStack — только список возможных отмен; • RedoStack — только список возможных повторов; • UndoAndRedoStacks — очищаются оба списка; print( — отправляет содержимое документа на печать. В качестве параметра указывается экземпляр одного из классов, порожденных от QPagedPaintDevice : QPrinter или QPdfWriter ; find() — производит поиск фрагмента в документе. Метод возвращает экземпляр класса QTextCursor из модуля QtGui . Если фрагмент не найден, то возвращенный экземпляр объекта будет нулевым. Проверить успешность операции можно с помощью метода isNull() класса QTextCursor . Форматы метода: find(<Текст>[, position=0][, options=0]) find( Параметр <Текст> задает искомый фрагмент, а параметр позволяет указать ре- гулярное выражение. По умолчанию обычный поиск производится без учета регистра символов в прямом направлении, начиная с позиции position или от текстового курсора, указанного в параметре . Поиск по регулярному выражению по умол- чанию производится с учетом регистра символов. Чтобы поиск производился без учета регистра, необходимо передать атрибут QtCore.Qt.CaseInsensitive в метод setCaseSensitivity() регулярного выражения. В необязательном параметре options можно указать комбинацию (через оператор | ) следующих атрибутов класса QTextDocument : 476 Часть II. Библиотека PyQt 5 • FindBackward — 1 — поиск в обратном, а не в прямом направлении; • FindCaseSensitively — 2 — поиск с учетом регистра символов. При использовании регулярного выражения значение игнорируется; • FindWholeWords — 4 — поиск целых слов, а не фрагментов; setDefaultFont( — задает шрифт по умолчанию для документа. В качестве параметра указывается экземпляр класса QFont из модуля QtGui . Конструктор класса QFont имеет следующий формат: <Шрифт> = QFont(<Название шрифта>[, pointSize=-1][, weight=-1] [, italic=False]) В первом параметре указывается название шрифта в виде строки. Необязательный пара- метр pointSize задает размер шрифта. В параметре weight можно выставить степень жирности шрифта: число от 0 до 99 или значение атрибутов Light , Normal , DemiBold , Bold или Black класса QFont . Если в параметре italic указано значение True , шрифт будет курсивным; setDefaultStyleSheet( — устанавливает для документа таблицу стилей CSS по умолчанию; setDocumentMargin(<Отступ>) — задает отступ от краев поля до текста; documentMargin() — возвращает величину отступа от краев поля до текста; setMaximumBlockCount(<Количество>) — задает максимальное количество текстовых блоков в документе. Если количество блоков становится больше указанного значения, первый блок будет удален; maximumBlockCount() — возвращает максимальное количество текстовых блоков; characterCount() — возвращает количество символов в документе; lineCount() — возвращает количество абзацев в документе; blockCount() — возвращает количество текстовых блоков в документе; firstBlock() — возвращает экземпляр класса QTextBlock , объявленного в модуле QtGui , который содержит первый текстовый блок документа; lastBlock() — возвращает экземпляр класса QTextBlock , который содержит последний текстовый блок документа; findBlock(<Индекс символа>) — возвращает экземпляр класса QTextBlock , который содержит текстовый блок документа, включающий символ с указанным индексом; findBlockByLineNumber(<Индекс абзаца>) — возвращает экземпляр класса QTextBlock , который содержит текстовый блок документа, включающий абзац с указанным индек- сом; findBlockByNumber(<Индекс блока>) — возвращает экземпляр класса QTextBlock , кото- рый содержит текстовый блок документа с указанным индексом. Класс QTextDocument поддерживает сигналы: undoAvailable(<Флаг>) — генерируется при изменении возможности отменить опера- цию ввода. Значение параметра True обозначает наличие возможности отменить опера- цию ввода, а False — отсутствие такой возможности; redoAvailable(<Флаг>) — генерируется при изменении возможности повторить отме- ненную операцию ввода. Значение параметра True обозначает наличие возможности по- вторить отмененную операцию ввода, а False — отсутствие такой возможности; Глава 21. Основные компоненты 477 undoCommandAdded — генерируется при добавлении операции ввода в список возможных отмен; blockCountChanged(<Новое количество блоков>) — генерируется при изменении количе- ства текстовых блоков. Внутри обработчика через параметр доступно новое количество текстовых блоков, заданное целым числом; cursorPositionChanged( — генерируется при изменении позиции тексто- вого курсора из-за операции редактирования. При простом перемещении текстового курсора сигнал не генерируется; contentsChange(<Позиция курсора>, <Количество добавленных символов>, <Количество удаленных символов>) — генерируется при изменении текста. Все три параметра цело- численные; contentsChanged — генерируется при любом изменении документа; modificationChanged(<Флаг>) — генерируется при изменении состояния документа: из неизмененного в измененное или наоборот. Значение параметра True обозначает, что документ помечен как измененный, значение False — что он теперь неизмененный. 21.6.5. Класс QTextCursor Класс QTextCursor из модуля QtGui предоставляет инструмент для доступа к документу, представленному экземпляром класса QTextDocument , и для его правки, — иными словами, текстовый курсор. Конструктор класса QTextCursor поддерживает следующие форматы: <Объект> = QTextCursor() <Объект> = QTextCursor( <Объект> = QTextCursor( <Объект> = QTextCursor( <Объект> = QTextCursor( Создать текстовый курсор, установить его в документе и управлять им позволяют следую- щие методы класса QTextEdit : textCursor() — возвращает видимый в данный момент текстовый курсор (экземпляр класса QTextCursor ). Чтобы изменения затронули текущий документ, необходимо пере- дать этот объект в метод setTextCursor() ; setTextCursor( — устанавливает текстовый курсор, ссылка на который указана в качестве параметра; cursorForPosition( — возвращает текстовый курсор, который соответствует позиции, указанной в качестве параметра. Позиция задается с помощью экземпляра класса QPoint в координатах области; moveCursor(<Позиция>[, mode=MoveAnchor]) |