📜  PyQt5 QCalendarWidget – 显示上一年(1)

📅  最后修改于: 2023-12-03 14:45:47.360000             🧑  作者: Mango

PyQt5 QCalendarWidget – 显示上一年

在 PyQt5 中,我们可以使用 QCalendarWidget 控件来创建一个日历。QCalendarWidget 是一个用于选择日期的控件,它提供了一个交互式的日历,用户可以通过它来选择日期,并可以在日历周围添加自定义控件。

在本文中,我们将学习如何在 QCalendarWidget 中显示上一年的日期。

显示上一年的日期

要在 QCalendarWidget 中显示上一年的日期,我们需要通过代码获取当前选择的日期,然后减去一年,并将结果设置为当前日期。下面是实现这个过程的示例代码:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QCalendarWidget, QVBoxLayout, QLabel, QPushButton
from PyQt5.QtCore import QDate


class Example(QWidget):

    def __init__(self):
        super().__init__()

        # 创建一个日历控件
        self.calendar = QCalendarWidget(self)
        self.calendar.setGridVisible(True)

        # 创建一个按钮,用来显示上一年的日期
        self.btn_prev_year = QPushButton('Previous year', self)
        self.btn_prev_year.clicked.connect(self.on_prev_year_clicked)

        # 创建一个标签,用来显示当前选择的日期
        self.lbl_date = QLabel('Selected date:', self)

        # 创建一个布局,并将控件添加到布局中
        layout = QVBoxLayout(self)
        layout.addWidget(self.calendar)
        layout.addWidget(self.btn_prev_year)
        layout.addWidget(self.lbl_date)

        # 设置窗口的标题和大小
        self.setWindowTitle('QCalendarWidget – Previous year')
        self.setGeometry(300, 300, 350, 300)

    def on_prev_year_clicked(self):
        # 获取当前选择的日期
        current_date = self.calendar.selectedDate()

        # 减去一年,并设置为当前日期
        prev_year_date = QDate(current_date.year() - 1, current_date.month(), current_date.day())
        self.calendar.setSelectedDate(prev_year_date)

        # 更新标签的文本
        self.lbl_date.setText(f'Selected date: {prev_year_date.toString("yyyy-MM-dd")}')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())

在上面的代码中,我们首先创建了一个 QCalendarWidget 控件,并将其添加到窗口中。然后,我们创建了一个按钮,用来触发上一年的日期显示功能。我们还创建了一个标签,用来显示当前选择的日期。最后,我们将这些控件添加到一个垂直布局中,并将布局设置为窗口的布局。

on_prev_year_clicked 方法中,我们首先获取当前选择的日期,然后减去一年,并将结果设置为当前日期。然后,我们更新标签的文本,以显示当前选择的日期。

运行程序后,您将看到一个显示日历和按钮的窗口。当您单击按钮时,您将看到 QCalendarWidget 中显示上一年的日期。标签也会更新以显示当前选择的日期。

希望这篇文章能够帮助您了解如何在 PyQt5 中显示上一年的日期。