ээдд. Прохоренок_Н_А__Дронов_В_А_Python_3_и_PyQt_5_Разработка_приложен. Николай Прохоренок Владимир Дронов
Скачать 7.92 Mb.
|
Заголовок")# Файл page2.html будет загружен с сайта http://www.somesite.ru/ webview.setHtml("Вторая страница", QtCore.QUrl('http://www.somesite.ru/')) selectedText() — возвращает выделенный текст или пустую строку, если ничего не бы- ло выделено; hasSelection() — возвращает True , если фрагмент страницы был выделен, и False — в противном случае; setZoomFactor(<Множитель>) — задает масштаб самой страницы. Значение 1 указывает, что страница будет выведена в оригинальном масштабе, значение меньше единицы — в уменьшенном, значение больше единицы — увеличенном масштабе; zoomFactor() — возвращает масштаб страницы; back() — загружает предыдущий ресурс из списка истории. Метод является слотом; forward() — загружает следующий ресурс из списка истории. Метод является слотом; reload() — перезагружает страницу. Метод является слотом; stop() — останавливает загрузку страницы. Метод является слотом; icon() — возвращает в виде экземпляра класса QIcon значок, заданный для страницы; findText(<Искомый текст>[, options=QWebEnginePage.FindFlags()][, resultCallback=0]) — позволяет найти на странице заданный фрагмент текста. Все найденные фрагменты будут выделены желтым фоном непосредственно в компоненте QWebEngineView Глава 21. Основные компоненты 495 Необязательный параметр option позволяет указать дополнительные параметры в виде экземпляра класса QWebEnginePage.FindFlags из того же модуля QtWebEngineWidgets В конструкторе этого класса можно указать один из атрибутов класса QWebEnginePage из модуля QtWebEngineWidgets или их комбинации через оператор | : • FindBackward — 1 — выполнять поиск в обратном, а не в прямом направлении; • FindCaseSensitively — 2 — поиск с учетом регистра символов (по умолчанию вы- полняется поиск без учета регистра). В необязательном параметре resultCallback можно указать функцию, которая будет вы- звана по окончании поиска. Эта функция должна принимать единственный параметр, которым станет логическая величина True , если поиск увенчался успехом, или False — в противном случае. Вот пример поиска с учетом регистра и выделением всех найденных совпадений: web.findText('Python', options=QtWebEngineWidgets.QWebEnginePage.FindFlags( QtWebEngineWidgets.QWebEnginePage.FindBackward | QtWebEngineWidgets.QWebEnginePage.FindCaseSensitively)) triggerPageAction(<Действие>[, checked=False]) — выполняет над страницей указан- ное действие. В качестве действия задается один из атрибутов класса QWebEnginePage — этих атрибутов очень много, и все они приведены на странице https://doc.qt.io/ qt-5/qwebenginepage.html#WebAction-enum. Необязательный параметр checked имеет смысл указывать лишь для действий, принимающих логический флаг: # Выделение всей страницы web.triggerPageAction(QtWebEngineWidgets.QWebEnginePage.SelectAll) # Копирование выделенного фрагмента страницы web.triggerPageAction(QtWebEngineWidgets.QWebEnginePage.Copy) # Перезагрузка страницы, минуя кэш web.triggerPageAction(QtWebEngineWidgets.QWebEnginePage.ReloadAndBypassCache) page() — возвращает экземпляр класса QWebEnginePage из модуля QtWebEngineWidgets , представляющий открытую веб-страницу. Класс QWebEngineView поддерживает следующий набор полезных для нас сигналов (полный их список смотрите на странице https://doc.qt.io/qt-5/qwebengineview.html): iconChanged — генерируется после загрузки или изменения значка, заданного для стра- ницы; loadFinished(<Признак>) — генерируется по окончании загрузки страницы. Значение True параметра указывает, что загрузка выполнена без проблем, False — что при загруз- ке произошли ошибки; loadProgress(<Процент выполнения>) — периодически генерируется в процессе загрузки страницы. В качестве параметра передается целое число от 0 до 100 , показывающее про- цент загрузки; loadStarted — генерируется после начала загрузки страницы; selectionChanged — генерируется при выделении нового фрагмента содержимого стра- ницы; titleChanged(<Текст>) — генерируется при изменении текста заголовка страницы (со- держимого тега ). В параметре, передаваемом обработчику, доступен этот текст в виде строки; 496 Часть II. Библиотека PyQt 5 urlChanged( — генерируется при изменении адреса текущей страницы, что мо- жет быть вызвано, например, загрузкой новой страницы. Параметр — новый адрес. Класс QWebEnginePage , представляющий открытую в веб-браузере страницу и получаемый вызовом метода page() класса QWebEngineView , поддерживает следующие полезные для нас методы (полный их список смотрите на странице https://doc.qt.io/qt-5/qwebenginepage.html): print( — печатает содержимое страницы на заданном принтере. Вторым параметром указывается функция, которая будет вызвана после окончания пе- чати и должна принимать единственный параметр, которым будет значение True , если печать завершилась успешно, и False — в противном случае. Метод поддерживается PyQt, начиная с версии 5.8; printToPdf() — преобразует страницу в формат PDF. Форматы метода: printToPdf(<Путь файла>, pageLayout=QPageLayout(QPageSize(QPageSize::A4), QPageLayout::Portrait, QMarginsF())) printToPdf(<Функция>, pageLayout=QPageLayout(QPageSize(QPageSize::A4), QPageLayout::Portrait, QMarginsF())) Первый формат сразу сохраняет преобразованную страницу в файле, чей путь указан первым параметром. Второй формат после преобразования вызывает указанную в пер- вом параметре функцию, передавая ей в качестве единственного параметра массив типа bytes , хранящий преобразованную страницу. Необязательный параметр pageLayout задает настройки страницы в виде экземпляра класса QPageLayout (он будет описан в главе 29). Если параметр не указан, будет выпол- нена печать на бумаге типоразмера А4, в портретной ориентации, без отступов. Метод поддерживается PyQt, начиная с версии 5.7; save(<Путь файла>, format=QWebEngineDownloadItem::MimeHtmlSaveFormat) — сохраня- ет страницу в файле, чей путь указан в первом параметре. Необязательный параметр format задает формат файла — для него можно задать один из следующих атрибутов класса QWebEngineDownloadItem , определенного в модуле QtWebEngineWidgets : • SingleHtmlSaveFormat — 0 — обычный HTML-файл. Связанные со страницей файлы (изображения, аудио- и видеоролики, таблицы стилей и пр.) не сохраняются; • CompleteHtmlSaveFormat — 1 — то же самое, только связанные файлы будут сохране- ны в каталоге, находящемся там же, где и файл со страницей, и имеющем то же имя; • MimeHtmlSaveFormat — 2 — страница и все связанные файлы сохраняются в одном файле. Метод поддерживается PyQt, начиная с версии 5.8; contentsSize() — возвращает экземпляр класса QSizeF , хранящий размеры содержимого страницы. Метод поддерживается PyQt, начиная с версии 5.7; scrollPosition() — возвращает экземпляр класса QPointF , хранящий позицию прокрут- ки содержимого страницы. Метод поддерживается PyQt, начиная с версии 5.7; setAudioMuted(<Флаг>) — если с параметром передать значение True , все звуки, воспро- изводящиеся на странице, будут приглушены. Чтобы снова сделать их слышимыми, нужно передать значение False . Метод поддерживается PyQt, начиная с версии 5.7; Глава 21. Основные компоненты 497 isAudioMuted() — возвращает True , если все звуки, воспроизводящиеся на странице, приглушены, и False — в противном случае. Метод поддерживается PyQt, начиная с версии 5.7; setBackgroundColor(<Цвет>) — задает для страницы фоновый цвет, указанный в виде экземпляра класса QColor . Метод поддерживается PyQt, начиная с версии 5.6; backgroundColor() — возвращает фоновый цвет страницы в виде экземпляра класса QColor . Метод поддерживается PyQt, начиная с версии 5.6. ГЛ А В А 22 Списки и таблицы PyQt содержит широкий выбор компонентов, позволяющих отображать как простой список строк (в свернутом или развернутом состояниях), так и табличные данные. Кроме того, можно отобразить данные, которые имеют очень сложную структуру, — например, иерар- хическую. Благодаря поддержке концепции «модель-представление», позволяющей отде- лить данные от их отображения, одни и те же данные можно отображать сразу в нескольких компонентах без их дублирования. 22.1. Раскрывающийся список Класс QComboBox реализует раскрывающийся список с возможностью выбора одного пункта. При щелчке мышью на поле появляется список возможных вариантов, а при выборе пункта список сворачивается. Иерархия наследования выглядит так: (QObject, QPaintDevice) — QWidget — QComboBox Формат конструктора класса QComboBox : <Объект> = QComboBox([parent=<Родитель>]) 22.1.1. Добавление, изменение и удаление элементов Для добавления, изменения, удаления и получения значения элементов предназначены сле- дующие методы класса QComboBox : addItem() — добавляет один элемент в конец списка. Форматы метода: addItem(<Строка>[, <Данные>]) addItem( В параметре <Строка> задается текст элемента списка, а в параметре — значок, который будет отображен перед текстом. Необязательный параметр <Данные> позволяет сохранить пользовательские данные — например, индекс в таблице базы данных; addItems(<Список строк>) — добавляет несколько элементов в конец списка; insertItem() — вставляет один элемент в указанную позицию списка. Все остальные элементы сдвигаются в конец списка. Форматы метода: insertItem(<Индекс>, <Строка>[, <Данные>]) insertItem(<Индекс>, Глава 22. Списки и таблицы 499 insertItems(<Индекс>, <Список строк>) — вставляет несколько элементов в указанную позицию списка. Все остальные элементы сдвигаются в конец списка; insertSeparator(<Индекс>) — вставляет разделительную линию в указанную позицию; setItemText(<Индекс>, <Строка>) — изменяет текст элемента с указанным индексом; setItemIcon(<Индекс>, — изменяет значок элемента с указанным индексом; setItemData(<Индекс>, <Данные>[, role=UserRole]) — изменяет данные для элемента с указанным индексом. Необязательный параметр role позволяет указать роль, для ко- торой задаются данные. Например, если указать атрибут ToolTipRole класса QtCore.Qt , данные зададут текст всплывающей подсказки, которая будет отображена при наведении указателя мыши на элемент. По умолчанию изменяются пользовательские данные; removeItem(<Индекс>) — удаляет элемент с указанным индексом; setCurrentIndex(<Индекс>) — делает элемент с указанным индексом текущим. Метод является слотом; currentIndex() — возвращает индекс текущего элемента; setCurrentText(<Строка>) — делает элемент с текстом, совпадающим с указанной стро- кой, текущим. Метод является слотом; currentText() — возвращает текст текущего элемента; itemText(<Индекс>) — возвращает текст элемента с указанным индексом; itemData(<Индекс>[, role=UserRole]) — возвращает данные, сохраненные в роли role элемента с индексом <Индекс> ; count() — возвращает общее количество элементов списка. Получить количество эле- ментов можно также с помощью функции len() ; clear() — удаляет все элементы списка. 22.1.2. Изменение параметров списка Управлять параметрами раскрывающегося списка позволяют следующие методы класса QComboBox : setEditable(<Флаг>) — если в качестве параметра указано значение True , пользователь сможет вводить текст в раскрывающийся список и, возможно, добавлять таким образом в него новые элементы; setInsertPolicy(<Режим>) — задает режим добавления в список элементов, введенных пользователем. В качестве параметра указываются следующие атрибуты класса QComboBox : • NoInsert — 0 — элемент не будет добавлен; • InsertAtTop — 1 — элемент вставляется в начало списка; • InsertAtCurrent — 2 — будет изменен текст текущего элемента; • InsertAtBottom — 3 — элемент добавляется в конец списка; • InsertAfterCurrent — 4 — элемент вставляется после текущего элемента; • InsertBeforeCurrent — 5 — элемент вставляется перед текущим элементом; 500 Часть II. Библиотека PyQt 5 • InsertAlphabetically — 6 — при вставке учитывается алфавитный порядок следова- ния элементов; setEditText(<Текст>) — вставляет текст в поле редактирования. Метод является слотом; clearEditText() — удаляет текст из поля редактирования. Метод является слотом; setCompleter( — позволяет предлагать возможные варианты значений, начинающиеся с введенных пользователем символов. В качестве параметра указывается экземпляр класса QCompleter ; setValidator( — устанавливает контроль ввода. В качестве значения ука- зывается экземпляр класса, наследующего класс QValidator (см. разд. 21.5.3); setDuplicatesEnabled(<Флаг>) — если в качестве параметра указано значение True , пользователь может добавить элемент с повторяющимся текстом. По умолчанию повто- ры запрещены; setMaxCount(<Количество>) — задает максимальное количество элементов в списке. Если до вызова метода количество элементов превышало это количество, лишние эле- менты будут удалены; setMaxVisibleItems(<Количество>) — задает максимальное количество видимых эле- ментов в раскрывающемся списке; setMinimumContentsLength(<Количество>) — задает минимальное количество символов, которое должно помещаться в раскрывающемся списке; setSizeAdjustPolicy(<Режим>) — задает режим установки ширины списка при измене- нии содержимого. В качестве параметра указываются следующие атрибуты класса QComboBox : • AdjustToContents — 0 — ширина списка подстраивается под ширину текущего со- держимого; • AdjustToContentsOnFirstShow — 1 — ширина списка подстраивается под ширину со- держимого, имевшегося в списке при первом его отображении; • AdjustToMinimumContentsLength — 2 — использовать вместо него AdjustToContents или AdjustToContentsOnFirstShow ; • AdjustToMinimumContentsLengthWithIcon — 3 — используется значение минимальной ширины, которое установлено с помощью метода setMinimumContentsLength() , плюс ширина значка; setFrame(<Флаг>) — если в качестве параметра указано значение False , список будет отображаться без рамки; setIconSize( — задает максимальный размер значков; showPopup() — разворачивает список; hidePopup() — сворачивает список. 22.1.3. Поиск элементов Произвести поиск элемента в списке позволяют методы findText() (по тексту элемента) и findData() (по данным с указанной ролью). Методы возвращают индекс найденного эле- мента или значение -1 , если таковой не был найден. Форматы методов: findText(<Текст>[, flags=MatchExactly | MatchCaseSensitive]) findData(<Данные>[, role=UserRole][, flags=MatchExactly | MatchCaseSensitive]) Глава 22. Списки и таблицы 501 Параметр flags задает режим поиска. В качестве значения через оператор | можно указать комбинацию следующих атрибутов класса QtCore.Qt : MatchExactly — 0 — поиск полного соответствия; MatchContains — 1 — поиск совпадения с любой частью; MatchStartsWith — 2 — совпадение с началом; MatchEndsWith — 3 — совпадение с концом; MatchRegExp — 4 — поиск с помощью регулярного выражения; MatchWildcard — 5 — используются подстановочные знаки; MatchFixedString — 8 — поиск полного соответствия внутри строки, выполняемый по умолчанию без учета регистра символов; MatchCaseSensitive — 16 — поиск с учетом регистра символов; MatchWrap — 32 — если просмотрены все элементы, и подходящий элемент не найден, поиск начнется с начала списка; MatchRecursive — 64 — просмотр всей иерархии. 22.1.4. Сигналы Класс QComboBox поддерживает следующие сигналы: activated(<Индекс>) и activated(<Текст>) — генерируются при выборе пользователем пункта в списке (даже если индекс не изменился). Внутри обработчика доступен цело- численный индекс или текст элемента; currentIndexChanged(<Индекс>) и currentIndexChanged(<Текст>) — генерируются при изменении текущего индекса. Внутри обработчика доступен целочисленный индекс (значение -1 , если список пуст) или текст элемента; editTextChanged(<Текст>) — генерируется при изменении текста в поле. Внутри обра- ботчика через параметр доступен новый текст; highlighted(<Индекс>) и highlighted(<Текст>) — генерируются при наведении указате- ля мыши на пункт в списке. Внутри обработчика доступен целочисленный индекс или текст элемента. 22.2. Список для выбора шрифта Класс QFontComboBox реализует раскрывающийся список с названиями шрифтов. Шрифт можно выбрать из списка или ввести его название в поле — при этом станут отображаться названия, начинающиеся с введенных букв. Иерархия наследования: (QObject, QPaintDevice) — QWidget — QComboBox — QFontComboBox Формат конструктора класса QFontComboBox : <Объект> = QFontComboBox([parent=<Родитель>]) Класс QFontComboBox наследует все методы и сигналы класса QComboBox (см. разд. 22.1) и определяет несколько дополнительных методов: |