📅  最后修改于: 2023-12-03 14:45:47.360000             🧑  作者: Mango
在 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 中显示上一年的日期。