Шаг 129.
Библиотека PyQt5.
Основные компоненты. Web-браузер
На этом шаге мы рассмотрим компонент, создающий такой браузер.
Класс QWebView, определенный в модуле QtWebKitWidgets, реализует полнофункциональный Web-браузер, поддерживающий HTML, XHTML, CSS, JavaScript,
вывод изображений и пр. (на рисунке 1 в этом компоненте выведена главная страница Google).
Рис.1. Компонент QWebView
Текст приложения:
# -*- coding: utf-8 -*-
from PyQt5 import QtWidgets, QtWebKitWidgets, QtCore
import sys
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.setWindowTitle("QWebView")
webview = QtWebKitWidgets.QWebView()
webview.load(QtCore.QUrl('http://www.google.ru/'))
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(webview)
window.setLayout(vbox)
window.show()
sys.exit(app.exec_())
Архив с файлом можно взять
здесь.
Иерархия наследования:
(QObject, QPaintDevice) - QWidget - QWebView
Формат конструктора класса QWebview:
<Объект> = QWebView([parent=<Родитель>])
Класс QWebView поддерживает следующие полезные для нас методы (полный их список можно найти на странице
https://doc.qt.io/qt-5/qwebenginepage.html):
- load (<QUrl>) и setUrl (<QUrl>) - загружают и выводят страницу с указанным в параметре адресом, который задается в виде экземпляра класса QUrl из модуля QtCore:
webview.load(QtCore.QUrl('http://www.google.ru/'))
- url () - возвращает адрес текущей страницы в виде экземпляра класса QUrl;
- title () - возвращает заголовок (содержимое тега <title>) текущей страницы;
- setHtml (<HTML-код>[, baseUrl=QUrl()]) - задает HTML-код страницы, которая будет отображена в компоненте.
Необязательный параметр baseUrl указывает базовый адрес, относительно которого будут отсчитываться относительные адреса в гиперссылках, ссылках на файлы изображений, таблицы
стилей, файлы сценариев и пр. Если этот параметр не указан, в качестве значения по умолчанию используется "пустой" экземпляр класса QUrl, и относительные адреса будут отсчитываться от
папки, где находится сам файл страницы. Примеры:
wv. setHtml("<h1>Заголовок</h1>")
# Файл page2.html будет загружен с сайта http://www.somesite.ru/
webview.setHtml("<a href='page2.html'>Вторая страница</а>",
QtCore.QUrl('http://www.somesite.ru/'))
- selectedText () - возвращает выделенный текст или пустую строку, если ничего не было выделено;
- selectedHtml () - возвращает HTML-код выделенного фрагмента страницы или пустую строку, если ничего не было выделено;
- hasSelection () - возвращает True, если фрагмент страницы был выделен, и False - в противном случае;
- setZoomFactor (<Множитель>) - задает масштаб самой страницы. Значение 1 указывает, что страница будет выведена в оригинальном масштабе, значение меньше единицы -
в уменьшенном, значение больше единицы - увеличенном масштабе;
- zoomFactor () - возвращает масштаб страницы;
- back () - загружает предыдущий ресурс из списка истории. Метод является слотом;
- forward () - загружает следующий ресурс из списка истории. Метод является слотом;
- reload () - перезагружает страницу. Метод является слотом;
- stop () - останавливает загрузку страницы. Метод является слотом;
- print (<QPrinter>) - печатает содержимое страницы на заданном принтере. Метод является слотом;
- icon () - возвращает в виде экземпляра класса QIcon значок, заданный для страницы;
- findText (<Искомый текст>[, options=0]) - позволяет найти на странице заданный фрагмент текста. Необязательный параметр options позволяет задать дополнительные
параметры в виде атрибутов класса QWebPage из модуля QtwebKitWidgets или их комбинации через оператор |:
- FindBackward (или 1) - выполнять поиск в обратном, а не в прямом направлении;
- FindCaseSensitively (или 2) - поиск с учетом регистра символов (по умолчанию выполняется поиск без учета регистра);
- FindWrapsAroundDocument (или 4) - если поиск был выполнен до конца страницы, и совпадения не были найдены, поиск продолжится с начала страницы;
- HighligntAllOccurrences (или 8) - выделить все найденные совпадения;
- FindAtWordBeginningsOnly (или 16) - искать только в начале слов;
- TreatMedialCapitalAsWordBeginning (или 32) - расценивать прописные буквы, находящиеся в середине слов, как начало следующего слова;
- FindBeginsInSelection (или 64) - в первую очередь искать в выделенном фрагменте страницы.
Пример поиска с учетом регистра и выделением всех найденных совпадений:
wv.findText('Python', QtWidgets.QWebView.FindCaseSensitively |
QtWidgets.QWebView.HighlightAllOccurrences)
- triggerPageAction (<Действие>[, checked=False]) - выполняет над страницей указанное действие. В качестве действия задается один из атрибутов класса QWebPage,
объявленного в модуле QtWebKitWidgets, - этих атрибутов очень много, и все они приведены на странице
https://doc.qt.io/qt-5/qwebenginepage.html#WebAction-enum
Необязательный параметр checked имеет смысл указывать лишь для действий, принимающих логический флаг. Примеры:
# Выделение всей страницы
wv.triggerPageAction(QtWebKitWidgets.QWebPage.SelectAll)
# Копирование выделенного фрагмента страницы
wv.triggerPageAction(QtWebKitWidgets.QWebPage.Copy)
# Перезагрузка страницы, минуя кэш
wv.triggerPageAction(QtWebKitWidgets.QWebPage.ReloadAndBypassCache)
Класс QWebView поддерживает следующий набор сигналов:
- iconChanged - генерируется после загрузки или изменения значка, заданного для страницы;
- linkClicked (<QUrl>) - генерируется, когда пользователь выполняет переход по гиперссылке. В параметре доступен адрес гиперссылки, по которой был выполнен переход;
- loadFinished (<Признак>) - генерируется по окончании загрузки страницы. Значение True параметра указывает, что загрузка выполнена без проблем, False - что при загрузке произошли ошибки;
- loadProgress (<Процент выполнения>) -периодически генерируется в процессе загрузки страницы. В качестве параметра передается целое число от 0 до 100, показывающее процент загрузки;
- loadStarted - генерируется после начала загрузки страницы;
- selectionChanged - генерируется при выделении нового фрагмента содержимого страницы;
- statusBarMessage (<Teкст>) - генерируется при изменении текста, который должен выводиться в строке состояния. В параметре доступен новый текст в виде строки;
- titleChanged (<Teкст>) - генерируется при изменении текста заголовка страницы (содержимого тега <title>). В параметре, передаваемом обработчику, доступен этот текст в виде строки;
- urlChanged (<QUrl>) - генерируется при изменении адреса текущей страницы, что может быть вызвано, например, загрузкой новой страницы. Параметр - новый адрес.
Со следующего шага мы начнем рассматривать списки и таблицы.
Предыдущий шаг
Содержание
Следующий шаг