ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 05.12.2023
Просмотров: 831
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
480
Часть II. Библиотека PyQt 5
deleteChar()
— если нет выделенного фрагмента, удаляет символ справа от курсора, в противном случае удаляет выделенный фрагмент;
deletePreviousChar()
— если нет выделенного фрагмента, удаляет символ слева от кур- сора, в противном случае удаляет выделенный фрагмент;
beginEditBlock()
и endEditBlock()
— задают начало и конец блока инструкций. Эти инструкции могут быть отменены или повторены как единое целое с помощью методов undo()
и redo()
;
joinPreviousEditBlock()
— делает последующие инструкции частью предыдущего бло- ка инструкций;
setKeepPositionOnInsert(<Флаг>)
— если в качестве параметра указано значение
True
, то после операции вставки курсор сохранит свою предыдущую позицию. По умолчанию позиция курсора при вставке изменяется;
insertText(<Текст>[,
— вставляет простой текст;
insertHtml(<Текст>)
— вставляет текст в формате HTML.
С помощью методов insertBlock()
, insertFragment()
, insertFrame()
, insertImage()
, insertList()
и insertTable()
можно вставить различные элементы: изображения, списки и др. Изменить формат выделенного фрагмента позволяют методы mergeBlockCharFormat()
, mergeBlockFormat()
и mergeCharFormat()
. За подробной информацией по этим методам обращайтесь к странице документации https://doc.qt.io/qt-5/qtextcursor.html.
21.7. Текстовый браузер
Класс
QTextBrowser расширяет возможности класса
QTextEdit и реализует текстовый брау- зер с возможностью перехода по гиперссылкам. Иерархия наследования выглядит так:
(QObject, QPaintDevice) — QWidget — QFrame —
QAbstractScrollArea — QTextEdit — QTextBrowser
Формат конструктора класса
QTextBrowser
:
<Объект> = QTextBrowser([parent=<Родитель>])
Класс
QTextBrowser поддерживает следующие основные методы (полный их список смотри- те на странице https://doc.qt.io/qt-5/qtextbrowser.html):
setSource(
— загружает ресурс. В качестве параметра указывается экземпляр класса
QUrl из модуля
QtCore
:
# Загружаем и выводим содержимое текстового файла url = QtCore.QUrl("text.txt") browser.setSource(url)
Метод является слотом;
source()
— возвращает экземпляр класса
QUrl с адресом текущего ресурса;
reload()
— перезагружает текущий ресурс. Метод является слотом;
home()
— загружает первый ресурс из списка истории. Метод является слотом;
backward()
— загружает предыдущий ресурс из списка истории. Метод является слотом;
forward()
— загружает следующий ресурс из списка истории. Метод является слотом;
Глава 21. Основные компоненты
481
backwardHistoryCount()
— возвращает количество предыдущих ресурсов из списка ис- тории;
forwardHistoryCount()
— возвращает количество следующих ресурсов из списка исто- рии;
isBackwardAvailable()
— возвращает значение
True
, если существует предыдущий ресурс в списке истории, и
False
— в противном случае;
isForwardAvailable()
— возвращает значение
True
, если существует следующий ресурс в списке истории, и
False
— в противном случае;
clearHistory()
— очищает список истории;
historyTitle(<Количество позиций>)
— если в качестве параметра указано отрицатель- ное число, возвращает заголовок предыдущего ресурса, отстоящего от текущего на за- данное число позиций, если
0
— заголовок текущего ресурса, а если положительное число — заголовок следующего ресурса, также отстоящего от текущего на заданное число позиций;
historyUrl(<Количество позиций>)
— то же самое, что historyTitle()
, но возвращает адрес ресурса в виде экземпляра класса
QUrl
;
setOpenLinks(<Флаг>)
— если в качестве параметра указано значение
True
, то автомати- ческий переход по гиперссылкам будет разрешен (значение по умолчанию). Значение
False запрещает переход.
Класс
QTextBrowser поддерживает сигналы:
anchorClicked(
— генерируется при переходе по гиперссылке. Внутри обработ- чика через параметр доступен адрес (URL) гиперссылки;
backwardAvailable(<Признак>)
— генерируется при изменении статуса списка предыду- щих ресурсов. Внутри обработчика через параметр доступно значение
True
, если в спи- ске истории имеются предыдущие ресурсы, и
False
— в противном случае;
forwardAvailable(<Признак>)
— генерируется при изменении статуса списка следующих ресурсов. В обработчике через параметр доступно значение
True
, если в списке истории имеются следующие ресурсы, и
False
— в противном случае;
highlighted(
— генерируется при наведении указателя мыши на гиперссылку и выведении его. Внутри обработчика через параметр доступен адрес (URL) ссылки или пустой объект;
highlighted(<Адрес>)
— генерируется при наведении указателя мыши на гиперссылку и выведении его. Внутри обработчика через параметр доступен адрес (URL) ссылки в виде строки или пустая строка;
historyChanged
— генерируется при изменении списка истории;
sourceChanged(<Адрес>)
— генерируется при загрузке нового ресурса. Внутри обработ- чика через параметр доступен адрес (URL) загруженного ресурса.
21.8. Поля для ввода целых и вещественных чисел
Для ввода целых чисел предназначен класс
QSpinBox
, для ввода вещественных чисел — класс
QDoubleSpinBox
. Эти поля могут содержать две кнопки, которые позволяют щелчками
482
Часть II. Библиотека PyQt 5 мыши увеличивать и уменьшать значение внутри поля. Пример такого поля ввода можно увидеть на рис. 21.1. Иерархия наследования:
(QObject, QPaintDevice) — QWidget — QAbstractSpinBox — QSpinBox
(QObject, QPaintDevice) — QWidget — QAbstractSpinBox — QDoubleSpinBox
Рис. 21.1. Компонент
QSpinBox
Форматы конструкторов классов
QSpinBox и
QDoubleSpinBox
:
<Объект> = QSpinBox([parent=<Родитель>])
<Объект> = QDoubleSpinBox([parent=<Родитель>])
Классы
QSpinBox и
QDoubleSpinBox наследуют следующие методы из класса
QAbstractSpinBox
(здесь приведены только основные — полный их список смотрите на странице https://doc.qt.io/qt-5/qabstractspinbox.html):
setButtonSymbols(<Режим>)
— задает режим отображения кнопок, предназначенных для изменения значения поля с помощью мыши. Можно указать следующие атрибуты клас- са
QAbstractSpinBox
:
•
UpDownArrows
—
0
— отображаются кнопки со стрелками;
•
PlusMinus
—
1
— отображаются кнопки с символами
+
и
-
. Обратите внимание, что при использовании некоторых стилей это значение может быть проигнорировано;
•
NoButtons
—
2
— кнопки не отображаются;
setAlignment(<Режим>)
— задает режим выравнивания значения внутри поля;
setWrapping(<Флаг>)
— если в качестве параметра указано значение
True
, то значение внутри поля будет при нажатии кнопок изменяться по кругу: максимальное значение сменится минимальным и наоборот;
setSpecialValueText(<Строка>)
— позволяет задать строку, которая будет отображаться внутри поля вместо минимального значения;
setReadOnly(<Флаг>)
— если в качестве параметра указано значение
True
, поле будет доступно только для чтения;
setFrame(<Флаг>)
— если в качестве параметра указано значение
False
, поле будет ото- бражаться без рамки;
stepDown()
— уменьшает значение на одно приращение. Метод является слотом;
stepUp()
— увеличивает значение на одно приращение. Метод является слотом;
stepBy(<Количество>)
— увеличивает (при положительном значении) или уменьшает
(при отрицательном значении) значение поля на указанное количество приращений;
text()
— возвращает текст, содержащийся внутри поля;
clear()
— очищает поле. Метод является слотом;
selectAll()
— выделяет все содержимое поля. Метод является слотом.
Класс
QAbstractSpinBox поддерживает сигнал editingFinished
, который генерируется при потере полем фокуса ввода или при нажатии клавиши
Глава 21. Основные компоненты
483
Классы
QSpinBox и
QDoubleSpinBox поддерживают следующие методы (здесь приведены только основные
— полные их списки доступны на страницах https://doc.qt.io/qt-5/ qspinbox.html и https://doc.qt.io/qt-5/qdoublespinbox.html соответственно):
setValue(<Число>)
— задает значение поля. Метод является слотом, принимающим, в зависимости от компонента, целое или вещественное значение;
value()
— возвращает целое или вещественное число, содержащееся в поле;
cleanText()
— возвращает целое или вещественное число в виде строки;
setRange(<Минимум>, <Максимум>)
, setMinimum(<Минимум>)
и setMaximum(<Максимум>)
— задают минимальное и максимальное допустимые значения;
setPrefix(<Текст>)
— задает текст, который будет отображаться внутри поля перед зна- чением;
setSuffix(<Текст>)
— задает текст, который будет отображаться внутри поля после зна- чения;
setSingleStep(<Число>)
— задает число, которое будет прибавляться или вычитаться из текущего значения поля на каждом шаге.
Класс
QDoubleSpinBox также поддерживает метод setDecimals(<Количество>)
, который задает количество цифр после десятичной точки.
Классы
QSpinBox и
QDoubleSpinBox поддерживают сигналы valueChanged(<Целое число>)
(только в классе
QSpinBox
), valueChanged(<Вещественное число>)
(только в классе
QDoubleSpinBox
) и valueChanged(<Строка>)
, которые генерируются при изменении значения внутри поля. Внутри обработчика через параметр доступно новое значение в виде числа или строки в зависимости от типа параметра.
21.9. Поля для ввода даты и времени
Для ввода даты и времени предназначены классы
QDateTimeEdit
(ввод даты и времени),
QDateEdit
(ввод даты) и
QTimeEdit
(ввод времени). Поля могут содержать кнопки, которые позволяют щелчками мыши увеличивать и уменьшать значение внутри поля. Пример такого поля показан на рис. 21.2.
Рис. 21.2. Компонент
QDateEdit с кнопками-стрелками
Иерархия наследования:
(QObject, QPaintDevice) — QWidget — QAbstractSpinBox — QDateTimeEdit
(QObject, QPaintDevice) — QWidget — QAbstractSpinBox — QDateTimeEdit — QDateEdit
(QObject, QPaintDevice) — QWidget — QAbstractSpinBox — QDateTimeEdit — QTimeEdit
Форматы конструкторов классов:
<Объект> = QDateTimeEdit([parent=<Родитель>])
<Объект> = QDateTimeEdit(
<Объект> = QDateTimeEdit(
484
Часть II. Библиотека PyQt 5
<Объект> = QDateTimeEdit(
<Объект> = QDateEdit([parent=<Родитель>])
<Объект> = QDateEdit(
<Объект> = QTimeEdit([parent=<Родитель>])
<Объект> = QTimeEdit(
В параметре
можно указать экземпляр класса
QDateTime или экземпляр класса datetime из языка Python. Преобразовать экземпляр класса
QDateTime в экземпляр класса datetime позволяет метод toPyDateTime()
класса
QDateTime
:
>>> from PyQt5 import QtCore
>>> d = QtCore.QDateTime()
>>> d
PyQt5.QtCore.QDateTime()
>>> d.toPyDateTime() datetime.datetime(0, 0, 0, 255, 255, 255, 16776216)
В качестве параметра
можно указать экземпляр класса
QDate или экземпляр класса date из языка Python. Преобразовать экземпляр класса
QDate в экземпляр класса date позво- ляет метод toPyDate()
класса
QDate
В параметре
можно указать экземпляр класса
QTime или экземпляр класса time из языка Python. Преобразовать экземпляр класса
QTime в экземпляр класса time позволяет метод toPyTime()
класса
QTime
Классы
QDateTime
,
QDate и
QTime определены в модуле
QtCore
Класс
QDateTimeEdit наследует все методы из класса
QAbstractSpinBox
(см. разд. 21.8) и дополнительно реализует следующие методы (здесь приведены только самые полезные — полный их список смотрите на странице https://doc.qt.io/qt-5/qdatetimeedit.html):
setDateTime(
— устанавливает дату и время. В качестве параметра указы- вается экземпляр класса
QDateTime или экземпляр класса datetime из языка Python. Ме- тод является слотом;
setDate(
— устанавливает дату. В качестве параметра указывается экземпляр класса
QDate или экземпляр класса date языка Python. Метод является слотом;
setTime(
— устанавливает время. В качестве параметра указывается экземпляр класса
QTime или экземпляр класса time из языка Python. Метод является слотом;
dateTime()
— возвращает экземпляр класса
QDateTime с датой и временем;
date()
— возвращает экземпляр класса
QDate с датой;
time()
— возвращает экземпляр класса
QTime со временем;
setDateTimeRange(<Минимум>, <Максимум>)
, setMinimumDateTime(<Минимум>)
и setMaximumDateTime(<Максимум>)
— задают минимальное и максимальное допустимые значения для даты и времени. В параметрах указывается экземпляр класса
QDateTime или экземпляр класса datetime из языка Python;
setDateRange(<Минимум>, <Максимум>)
, setMinimumDate(<Минимум>)
и setMaximumDate
(<Максимум>)
— задают минимальное и максимальное допустимые значения для даты. В параметрах указывается экземпляр класса
QDate или экземпляр класса date из языка Python;
setTimeRange(<Минимум>, <Максимум>)
, setMinimumTime(<Минимум>)
и setMaximumTime(
<Максимум>)
— задают минимальное и максимальное допустимые значения для време-
Глава 21. Основные компоненты
485 ни. В параметрах указывается экземпляр класса
QTime или экземпляр класса time из язы- ка Python;
setDisplayFormat(<Формат>)
— задает формат отображения даты и времени. В качестве параметра указывается строка, содержащая специальные символы. Пример задания строки формата: dateTimeEdit.setDisplayFormat("dd.MM.yyyy HH:mm:ss")
setTimeSpec(<Зона>)
— задает зону времени. В качестве параметра можно указать атри- буты
LocalTime
,
UTC
или
OffsetFromUTC
класса
QtCore.Qt
;
setCalendarPopup(<Флаг>)
— если в качестве параметра указано значение
True
, то дату можно будет выбрать с помощью календаря, который появится на экране при щелчке на кнопке с направленной вниз стрелкой, выведенной вместо стандартных кнопок-стрелок
(рис. 21.3);
Рис. 21.3. Компонент
QDateEdit с открытым календарем
setSelectedSection(<Секция>)
— выделяет указанную секцию. В качестве параметра можно задать атрибуты
NoSection
,
DaySection
,
MonthSection
,
YearSection
,
HourSection
,
MinuteSection
,
SecondSection
,
MSecSection или
AmPmSection класса
QDateTimeEdit
;
setCurrentSection(<Секция>)
— делает указанную секцию текущей;
setCurrentSectionIndex(<Индекс>)
— делает секцию с указанным индексом текущей;
currentSection()
— возвращает тип текущей секции;
currentSectionIndex()
— возвращает индекс текущей секции;
sectionCount()
— возвращает количество секций внутри поля;
sectionAt(<Индекс>)
— возвращает тип секции по указанному индексу;
sectionText(<Секция>)
— возвращает текст указанной секции.
При изменении значений даты или времени генерируются сигналы timeChanged(
, dateChanged(
и dateTimeChanged(
. Внутри обработчиков через пара- метр доступно новое значение.
Классы
QDateEdit
(поле для ввода даты) и
QTimeEdit
(поле для ввода времени) созданы для удобства и отличаются от класса
QDateTimeEdit только форматом отображаемых данных.
Эти классы наследуют методы базовых классов и не добавляют никаких своих методов.
486
Часть II. Библиотека PyQt 5 21.10. Календарь
Класс
QCalendarWidget реализует календарь с возможностью выбора даты и перемещения по месяцам с помощью мыши и клавиатуры (рис. 21.4). Иерархия наследования:
(QObject, QPaintDevice) — QWidget — QCalendarWidget
Рис. 21.4. Компонент
QCalendarWidget
Формат конструктора класса
QCalendarWidget
:
<Объект> = QCalendarWidget([parent=<Родитель>])
Класс
QCalendarWidget поддерживает следующие методы (здесь представлены только ос- новные — полный их список смотрите на странице https://doc.qt.io/qt-5/qcalendarwidget.html):
setSelectedDate(
— устанавливает дату, заданную в качестве параметра экзем- пляром класса
QDate или экземпляром класса date языка Python. Метод является слотом;
selectedDate()
— возвращает экземпляр класса
QDate с выбранной датой;
setDateRange(<Минимум>, <Максимум>)
, setMinimumDate(<Минимум>)
и setMaximumDate(
<Максимум>)
— задают минимальное и максимальное допустимые значения для даты.
В параметрах указывается экземпляр класса
QDate или экземпляр класса date из языка
Python. Метод setDateRange()
является слотом;
setCurrentPage(<Год>, <Месяц>)
— делает текущей страницу календаря с указанными годом и месяцем, которые задаются целыми числами. Выбранная дата при этом не изме- няется. Метод является слотом;
monthShown()
— возвращает месяц (число от
1
до
12
), отображаемый на текущей странице;
yearShown()
— возвращает год, отображаемый на текущей странице;
showSelectedDate()
— отображает страницу с выбранной датой. Выбранная дата при этом не изменяется. Метод является слотом;
showToday()
— отображает страницу с сегодняшней датой. Выбранная дата при этом не изменяется. Метод является слотом;
Глава 21. Основные компоненты
487
showPreviousMonth()
— отображает страницу с предыдущим месяцем. Выбранная дата при этом не изменяется. Метод является слотом;
showNextMonth()
— отображает страницу со следующим месяцем. Выбранная дата при этом не изменяется. Метод является слотом;
showPreviousYear()
— отображает страницу с текущим месяцем в предыдущем году.
Выбранная дата не изменяется. Метод является слотом;
showNextYear()
— отображает страницу с текущим месяцем в следующем году. Выбран- ная дата при этом не изменяется. Метод является слотом;
setFirstDayOfWeek(<День>)
— задает первый день недели. По умолчанию используется воскресенье. Чтобы первым днем недели сделать понедельник, следует в качестве пара- метра указать атрибут
Monday класса
QtCore.Qt
;
setNavigationBarVisible(<Флаг>)
— если в качестве параметра указано значение
False
, то панель навигации выводиться не будет. Метод является слотом;
setHorizontalHeaderFormat(<Формат>)
— задает формат горизонтального заголовка.
В качестве параметра можно указать следующие атрибуты класса
QCalendarWidget
:
•
NoHorizontalHeader
—
0
— заголовок не отображается;
•
SingleLetterDayNames
—
1
— отображается только первая буква из названия дня не- дели;
•
ShortDayNames
—
2
— отображается сокращенное название дня недели;
•
LongDayNames
—
3
— отображается полное название дня недели;
setVerticalHeaderFormat(<Формат>)
— задает формат вертикального заголовка. В каче- стве параметра можно указать следующие атрибуты класса
QCalendarWidget
:
•
NoVerticalHeader
—
0
— заголовок не отображается;
•
ISOWeekNumbers
—
1
— отображается номер недели в году;
setGridVisible(<Флаг>)
— если в качестве параметра указано значение
True
, линии сет- ки будут отображены. Метод является слотом;
setSelectionMode(<Режим>)
— задает режим выделения даты. В качестве параметра можно указать следующие атрибуты класса
QCalendarWidget
:
•
NoSelection
—
0
— дата не может быть выбрана пользователем;
•
SingleSelection
—
1
— может быть выбрана одна дата;
setHeaderTextFormat(
— задает формат ячеек заголовка. В параметре указывается экземпляр класса
QTextCharFormat из модуля
QtGui
;
setWeekdayTextFormat(<День недели>,
— определяет формат ячеек для указанного дня недели. В первом параметре задаются атрибуты
Monday
,
Tuesday
,
Wednesday
,
Thursday
,
Friday
,
Saturday или
Sunday класса
QtCore.Qt
, а во втором парамет- ре — экземпляр класса
QTextCharFormat
;
setDateTextFormat(
— задает формат ячейки с указанной датой. В первом параметре указывается экземпляр класса
QDate или экземпляр класса date из языка Python, а во втором параметре — экземпляр класса
QTextCharFormat
Класс
QCalendarWidget поддерживает такие сигналы:
activated(
— генерируется при двойном щелчке мышью или нажатии клавиши