class QCalendarWidget#

QCalendarWidget 类提供了一个基于月份的日历控件,允许用户选择日期。更多

Inheritance diagram of PySide6.QtWidgets.QCalendarWidget

概要#

属性#

方法#

虚函数#

槽函数#

信号#

注意

此文档可能包含自动从 C++ 转换为 Python 的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译问题,也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建工单来告诉我们

详细描述#

警告

本节包含自动从 C++ 转换为 Python 的代码片段,可能包含错误。

../../_images/fusion-calendarwidget.png

小部件以当前月份和年份初始化,但 QCalendarWidget 提供了几个公共槽来更改显示的年份和月份。

默认情况下,会选中今天的日期,用户可以使用鼠标和键盘选择日期。可以使用 selectedDate() 函数检索当前选中的日期。通过设置 minimumDatemaximumDate 属性,可以将用户的选择限制在一个给定的日期范围内。也可以使用 setDateRange() 方便槽,一次性设置两个属性。将 selectionMode 属性设置为 NoSelection 以禁止用户进行任何选择。注意,也可以使用 setSelectedDate() 槽来程序化选择日期。

可以使用 monthShown()yearShown() 函数分别检索当前显示的月份和年份。

新创建的日历组件默认使用缩写形式显示星期名,周六和周日以红色标注。日历网格不可见。显示星期数,并且第一列天的日期是当前地区的每周的第一天。

通过将 horizontalHeaderFormat 属性设置为 SingleLetterDayNames ,可以将日期的标注更改为单字母缩写(例如,“M”代表星期一)。将同一属性设置为 LongDayNames 将在标题中显示完整的星期名。通过将 verticalHeaderFormat 属性设置为 NoVerticalHeader 来移除星期数。通过使用 setGridVisible() 函数并将 gridVisible 属性设置为 true,可以开启日历网格。

../../_images/qcalendarwidget-grid.png
calendar = QCalendarWidget()
calendar.setGridVisible(True)

最后,可以使用 setFirstDayOfWeek() 函数更改第一列的天。

QCalendarWidget 类也提供了三个信号 selectionChanged()activated()currentPageChanged(),可以响应用户交互。

通过设置某些特殊工作日的 QTextCharFormat,特殊日期的符号或标题的渲染,可以高度定制日历标题、周和工作日的渲染。

日历部件只使用了 QTextCharFormat 属性的一部分。目前,前缀、背景和字体属性用于确定部件中个别单元格的渲染。

class HorizontalHeaderFormat#

这个枚举类型定义了水平标题可以显示的各种格式。

常量

描述

QCalendarWidget.SingleLetterDayNames

标题显示为日期名称的缩写字母(例如,M代表星期一)。

QCalendarWidget.ShortDayNames

标题显示日期名称的缩写(例如,Mon代表星期一)。

QCalendarWidget.LongDayNames

标题显示完整的日期名称(例如,星期一)。

QCalendarWidget.NoHorizontalHeader

标题被隐藏。

class VerticalHeaderFormat#

这个枚举类型定义了垂直标题可以显示的各种格式。

常量

描述

QCalendarWidget.ISOWeekNumbers

标题显示了由 QDate::weekNumber() 描述的 ISO 周数。

QCalendarWidget.NoVerticalHeader

标题被隐藏。

class SelectionMode#

这个枚举描述了提供给用户在选择日历中日期时使用的选择类型。

常量

描述

QCalendarWidget.NoSelection

日期不能被选中。

QCalendarWidget.SingleSelection

可以选中单个日期。

参见

selectionMode

注意

当使用from __feature__ import true_property时,可以直接使用属性;否则,可以通过访问函数来使用。

属性dateEditAcceptDelay: int#

该属性表示在用户接受日期编辑器内容之前,停用的日期编辑器显示的时间。

如果日历小部件的日期编辑启用,则此属性指定日期编辑器在用户最近输入后保持打开的时间(以毫秒为单位)。一旦时间过去,日期编辑器中指定的日期将被接受,弹出窗口将被关闭。

默认情况下,延迟定义为1500毫秒(1.5秒)。

访问函数
属性dateEditEnabled: bool#

该属性表示是否启用日期编辑器弹出窗口。

如果此属性被启用,则在日历小部件有焦点时按下非修改键,将弹出日期编辑器,允许用户以当前区域指定的形式指定日期。

默认情况下,此属性被启用。

QDateEdit相比,日期编辑在视觉上更简单,但允许用户使用左右箭头键在字段之间导航,使用上下箭头键递增和递减单个字段,并使用数字键直接输入值。

访问函数
属性firstDayOfWeek: Qt.DayOfWeek#

该属性表示第一列显示的日期。

默认情况下,第一列显示的日期是日历区域的第一天。

访问函数
属性gridVisible: bool#

警告

本节包含自动从 C++ 转换为 Python 的代码片段,可能包含错误。

该属性表示是否显示表格网格。

qcalendarwidget-grid1

calendar = QCalendarWidget()
calendar.setGridVisible(True)

默认值是false。

访问函数
属性horizontalHeaderFormat: QCalendarWidget.HorizontalHeaderFormat#

该属性表示水平表头的格式。

默认值是ShortDayNames

访问函数
属性 maximumDate: QDate#

警告

本节包含自动从 C++ 转换为 Python 的代码片段,可能包含错误。

此属性保存当前指定日期范围的最大日期。

用户将无法选择一个在当前设置的日期之后的日期。

../../_images/qcalendarwidget-maximum.png
calendar = QCalendarWidget()
calendar.setGridVisible(True)
calendar.setMaximumDate(QDate(2006, 7, 3))

设置最大日期时,如果选择范围无效,则会调整 minimumDateselectedDate 属性。如果提供的日期不是有效的 QDate 对象,则 setMaximumDate() 函数不执行任何操作。

默认最大日期是公元前9999年12月31日。您可以通过调用 clearMaximumDate() 恢复此默认值(自 Qt 6.6 起可用)。

访问函数
属性 minimumDate: QDate#

警告

本节包含自动从 C++ 转换为 Python 的代码片段,可能包含错误。

此属性保存当前指定日期范围的最小日期。

用户将无法选择一个在当前设置的最小日期之前的日期。

../../_images/qcalendarwidget-minimum.png
calendar = QCalendarWidget()
calendar.setGridVisible(True)
calendar.setMinimumDate(QDate(2006, 6, 19))

设置最小日期时,如果选择范围无效,则会调整 maximumDateselectedDate 属性。如果提供的日期不是有效的 QDate 对象,则 setMinimumDate() 函数不执行任何操作。

默认最小日期是公元前4714年11月25日。您可以通过调用 clearMinimumDate() 恢复此默认值(自 Qt 6.6 起可用)。

访问函数
属性 navigationBarVisible: bool#

此属性表示是否显示导航栏。

当此属性为 true(默认值)时,上方的导航栏会显示下一个月、上一个月、月份选择和年份选择控件。

当此属性设为 false 时,这些控件将隐藏。

访问函数
属性 selectedDate: QDate#

此属性保存当前选择的日期。

所选日期必须介于 minimumDatemaximumDate 属性指定的日期范围内。默认情况下,选择的日期是当前日期。

访问函数
属性 selectionMode: QCalendarWidget.SelectionMode#

该属性持有关于此日历中用户所能做出的选区类型。

当此属性设置为SingleSelection,用户可以在允许的最小和最大日期内选择日期,使用鼠标或键盘都可以。

当此属性设置为NoSelection,用户将无法选择日期,但仍可以被程序选择。请注意,当属性设置为NoSelection时所选的日期仍将保持为日历的选定日期。

默认值是SingleSelection

访问函数
属性 verticalHeaderFormat: QCalendarWidget.VerticalHeaderFormat#

该属性持有关于此日历的垂直标题的格式。

默认值是QCalendarWidget::ISOWeekNumber。

访问函数
__init__([parent=None])#
参数:

parentQWidget

构造一个具有给定的parent的日历小部件。

小部件使用当前的月份和年份初始化,当前选定的日期是今天。

activated(date)#
参数:

dateQDate

当用户在日历小部件中按下Enter或Return键或双击date时,将发出该信号。

calendar()#
返回类型:

QCalendar

clearMaximumDate()#

重置属性maximumDate的函数。

clearMinimumDate()#

重置属性 minimumDateᅟ 的功能。

clicked(date)#
参数:

dateQDate

当鼠标左键点击时,将发出此信号。鼠标点击的日期由 date 指定。只有当点击的是有效日期时,才会发出此信号,例如,日期不超出 minimumDate()maximumDate() 。如果选择模式为 NoSelection ,则不会发出该信号。

currentPageChanged(year, month)#
参数:
  • – int

  • – int

当前显示的月份更改时将发出此信号。作为参数传递新的 yearmonth

dateEditAcceptDelay()#
返回类型:

int

属性 dateEditAcceptDelayᅟ 的获取器。

dateTextFormat()#
返回类型:

包含类型为 .QDate 的键和类型为 QTextCharFormat 的值的字典。

返回一个从 QDate 到 QTextCharFormat 的 QMap,显示了所有使用特殊格式的日期,该格式会更改它们的渲染。

dateTextFormat(date)
参数:

dateQDate

返回类型:

QTextCharFormat

date 返回一个 QTextCharFormat。如果日期没有特殊渲染,则字符格式可以有空。

firstDayOfWeek()#
返回类型:

DayOfWeek

属性 firstDayOfWeekᅟ 的获取器。

headerTextFormat()#
返回类型:

QTextCharFormat

获取用于渲染标题的文本字符格式。

horizontalHeaderFormat()#
返回类型:

HorizontalHeaderFormat

属性 horizontalHeaderFormatᅟ 的获取器。

isDateEditEnabled()#
返回类型:

bool

属性 dateEditEnabled 的获取器。

isGridVisible()#
返回类型:

bool

属性 gridVisible 的获取器。

isNavigationBarVisible()#
返回类型:

bool

属性 navigationBarVisible 的获取器。

maximumDate()#
返回类型:

QDate

属性 maximumDate 的获取器。

minimumDate()#
返回类型:

QDate

属性 minimumDate 的获取器。

monthShown()#
返回类型:

int

返回当前显示的月份。月份从1到12进行编号。

paintCell(painter, rect, date)#
参数:

使用给定的 painterrect,绘制由给定的 date 指定的单元格。

selectedDate()#
返回类型:

QDate

属性 selectedDate 的获取器。

selectionChanged()#

当前选定的日期更改时发出此信号。

用户可以使用鼠标或键盘更改当前选定的日期,或者程序员可以使用 setSelectedDate() 方法来实现。

selectionMode()#
返回类型:

SelectionMode

属性 selectionModeᅟ 的获取器。

setCalendar(calendar)#
参数:

calendarQCalendar

setCurrentPage(year, month)#
参数:
  • – int

  • – int

显示给定 month 的年份,而不更改选中日期。使用 setSelectedDate() 函数来更改选中日期。

可以使用 monthShown()yearShown() 函数分别检索当前显示的月份和年份。

setDateEditAcceptDelay(delay)#
参数:

delay – int

属性 dateEditAcceptDelayᅟ 的设置器。

setDateEditEnabled(enable)#
参数:

enable – bool

属性 dateEditEnabledᅟ 的设置器。

setDateRange(min, max)#
参数:

警告

本节包含自动从 C++ 转换为 Python 的代码片段,可能包含错误。

通过设置 minimumDatemaximumDate 属性来定义日期范围。

日期范围限制了用户的选择,即用户只能选择指定日期范围内的日期。请注意

calendar = QCalendarWidget()
calendar.setDateRange(min, max)

calendar = QCalendarWidget()
calendar.setMinimumDate(min)
calendar.setMaximumDate(max)

如果 minmax 参数不是有效的 QDate 对象,则此函数不执行任何操作。

setDateTextFormat(date, format)#
参数:

设置用于绘制给定 date 的格式,该格式由 format 指定。

如果 date 为空,则清除所有日期格式。

setFirstDayOfWeek(dayOfWeek)#
参数:

dayOfWeekDayOfWeek

firstDayOfWeek 属性的设置器。

setGridVisible(show)#
参数:

show – bool

gridVisible 属性的设置器。

setHeaderTextFormat(format)#
参数:

formatQTextCharFormat

设置用于渲染标题的文本字符格式为 format。如果您还设置了星期文本格式,此格式的前景色和背景色将优先于标题的格式。其他格式信息仍然由标题的格式决定。

setHorizontalHeaderFormat(format)#
参数:

formatHorizontalHeaderFormat

属性 horizontalHeaderFormatᅟ 的设置器。

setMaximumDate(date)#
参数:

dateQDate

参见

maximumDate()

属性 maximumDateᅟ 的设置器。

setMinimumDate(date)#
参数:

dateQDate

参见

minimumDate()

属性 minimumDateᅟ 的设置器。

setNavigationBarVisible(visible)#
参数:

visible – bool

属性 navigationBarVisibleᅟ 的设置器。

setSelectedDate(date)#
参数:

dateQDate

属性 selectedDateᅟ 的设置器。

setSelectionMode(mode)#
参数:

modeSelectionMode

属性 selectionModeᅟ 的设置器。

setVerticalHeaderFormat(format)#
参数:

formatVerticalHeaderFormat

设置属性 verticalHeaderFormatᅟ 的设置器。

setWeekdayTextFormat(dayOfWeek, format)#
参数:

设置用于渲染周中 dayOfWeek 天的文本字符格式。格式的优先级高于标题格式,在前景和背景颜色方面。其他的文本格式信息来自标题格式。

showNextMonth()#

显示相对于当前显示月份的下一个月。请注意,选择日期不会改变。

showNextYear()#

显示相对于当前显示年份的下一年中的当前月份。请注意,选择日期不会改变。

showPreviousMonth()#

显示相对于当前显示月份的上一个月。请注意,选择日期不会改变。

showPreviousYear()#

显示相对于当前显示年份的上一年中的当前月份。请注意,选择日期不会改变。

showSelectedDate()#

显示选中日期的月份。

showToday()#

显示今天日期的月份。

updateCell(date)#
参数:

dateQDate

更新指定 date 的单元格,除非更新已被禁用或单元格不可见。

updateCells()#

更新所有可见的单元格,除非更新已被禁用。

参见

updateCell()

verticalHeaderFormat()#
返回类型:

VerticalHeaderFormat

属性 verticalHeaderFormat 的获取器。

weekdayTextFormat(dayOfWeek)#
参数:

dayOfWeekDayOfWeek

返回类型:

QTextCharFormat

返回显示星期中天数时使用的文本字符格式 dayOfWeek

yearShown()#
返回类型:

int

返回当前显示月份的年份。月份从 1 到 12 编号。