Шаг 122.
Библиотека PyQt5.
Основные компоненты. Календарь
На этом шаге мы рассмотрим.иерархию наследования, форму конструктора, основные методы класса, реализующего календарь.
Класс QCalendarWidget реализует календарь с возможностью выбора даты и перемещения по месяцам с помощью мыши и клавиатуры (рисунок 1).
Рис.1. Компонент QCalendarWidget
Текст приложения:
# -*- coding: utf-8 -*-
from PyQt5 import QtWidgets
import sys
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.setWindowTitle("QCalendarWidget")
calendar = QtWidgets.QCalendarWidget()
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(calendar)
window.setLayout(vbox)
window.show()
sys.exit(app.exec_())
Архив с файлом можно взять
здесь.
Иерархия наследования:
(QObject, QPaintDevice) - QWidget - QCalendarWidget
Формат конструктора класса QCalendarWidget:
<Объект> = QCalendarWidget([parent=<Родитель>])
Класс QCalendarWidget поддерживает следующие методы (здесь представлены только основные - полный их список приведен на странице
https://doc.qt.io/qt-5/qcalendarwidget.html:
- setSelectedDate (<QDate>) - устанавливает дату, заданную в качестве параметра экземпляром класса QDate или экземпляром класса date языка Python. Метод является слотом;
- selectedDate () - возвращает экземпляр класса QDate с выбранной датой;
- setDateRange (<Минимум>, <Максимум>), setMinimumDate (<Минимум>) и
setMaximumDate (<Максимум>) - задают минимальное и максимальное допустимые значения для даты. В параметрах указывается экземпляр класса QDate или экземпляр класса
date из языка Python. Метод setDateRange() является слотом;
- setCurrentPage (<Год>, <Месяц>) - делает текущей страницу календаря с указанными
годом и месяцем, которые задаются целыми числами. Выбранная дата при этом не изменяется. Метод является слотом;
- monthShown () - возвращает месяц (число от 1 до 12), отображаемый на текущей странице;
- yearShown () - возвращает год, отображаемый на текущей странице;
- showSelectedDate () - отображает страницу с выбранной датой. Выбранная дата приэтом не изменяется. Метод является слотом;
- showToday () - отображает страницу с сегодняшней датой. Выбранная дата при этом не изменяется. Метод является слотом;
- showPreviousMonth () - отображает страницу с предыдущим месяцем. Выбранная дата при этом не изменяется. Метод является слотом;
- showNextMonth () - отображает страницу со следующим месяцем. Выбранная дата при этом не изменяется. Метод является слотом;
- showPreviousYear () - отображает страницу с текущим месяцем в предыдущем году. Выбранная дата не изменяется. Метод является слотом;
- showNextYear () - отображает страницу с текущим месяцем в следующем году. Выбранная дата при этом не изменяется. Метод является слотом;
- setFirstDayOfWeek (<День>) - задает первый день недели. По умолчанию используется воскресенье. Чтобы первым днем
недели сделать понедельник, следует в качестве параметра указать атрибут Monday класса QtCore.Qt;
- setNavigationBarVisible (<Флаг>) - если в качестве параметра указано значение False, то панель навигации выводиться не будет. Метод является слотом;
- setHorizontalHeaderFormat (<Формат>) - задает формат горизонтального заголовка.
В качестве параметра можно указать следующие атрибуты класса QCalendarWidget:
- NoHorizontaiHeader (или 0) - заголовок не отображается;
- SingleLetterDayNames (или 1) - отображается только первая буква из названия дня недели;
- ShortDayNames (или 2) - отображается сокращенное название дня недели;
- LongDayNames (или 3) - отображается полное название дня недели;
- setVerticalHeaderFormat (<Формат>) - задает формат вертикального заголовка. В качестве параметра можно указать следующие атрибуты класса QCalendarWidget:
- NoVerticalHeader (или 0) - заголовок не отображается;
- ISOWeekNumbers (или 1) - отображается номер недели в году;
- setGridVisibie (<Флаг>) - если в качестве параметра указано значение True, то будут отображены линии сетки. Метод является слотом;
- setSelectionMode (<Peжим>) - задает режим выделения даты. В качестве параметра можно указать следующие атрибуты класса QCalendarWidget:
- NoSelection (или 0) - дата не может быть выбрана пользователем;
- SingleSelection (или 1) - может быть выбрана одна дата;
- setHeaderTextFormat (<QTextCharFormat>) - задает формат ячеек заголовка. В параметре
указывается экземпляр класса QTextCharFormat из модуля QtGui;
- setWeekdayTextFormat (<День недели>, <QTextCharFormat>) - определяет формат ячеек
для указанного дня недели. В первом параметре задаются атрибуты Monday, Tuesday, Wednesday, Thursday, Friday, Saturday или Sunday класса QtCore.Qt,
а во втором параметре - экземпляр класса QTextCharFormat;
- setDateTextFormat (<QDate>, <QTextCharFormat>) - задает формат ячейки с указанной
датой. В первом параметре указывается экземпляр класса QDate или экземпляр класса date из языка Python, а во втором параметре - экземпляр класса
QTextCharFormat.
Класс QCalendarWidget поддерживает такие сигналы:
- activated (<QDate>) - генерируется при двойном щелчке мышью или нажатии клавиши Enter. Внутри обработчика через параметр доступна текущая дата;
- clicked (<QDate>) - генерируется при щелчке мышью на доступной дате. Внутри обработчика через параметр доступна выбранная дата;
- currentPageCnanged (<Год>, <Месяц>) - генерируется при изменении страницы. Внутри
обработчика через первый параметр доступен год, а через второй - месяц. Обе величины задаются целыми числами;
- selectionСhanged - генерируется при изменении выбранной даты пользователем или из программного кода.
На следующем шаге мы рассмотрим электронный индикатор.
Предыдущий шаг
Содержание
Следующий шаг