- 创建日历
主要内容 #
完成效果 #
本节课程是万年历实现的第一节,完成本节课程,能实现创建日历对象并自定义效果。

收获 #
学习完本节内容,我们会创建一个日历,并且自定义各项设置。
1.创建日历 #
QCalendarWidget提供了基于月份的日历插件,十分简易而且直观。
用户可以点击月份,会出现下拉选择框,可以切换月份,或者点击两侧的左右箭头,逐月增减月份。
用户也可以点击年份,会出现编辑框,可以直接输入指定的年份,或者点击上下箭头逐年切换年份。
万年历的第一行水平表头显示周几,而第一列垂直表头显示选中日期属于该年的第几周。以下就是本例代码:
from PyQt5.QtWidgets import QWidget, QCalendarWidget, QLabel, QApplication, QVBoxLayout
from PyQt5.QtCore import QDate, QDateTime, QTimer, Qt
import sys
class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        cal = QCalendarWidget(self)  # 创建一个日历对象
        cal.setNavigationBarVisible(True)  # 设置导航条是否可见,True为可见
        cal.setFirstDayOfWeek(Qt.Monday)  # 设置周一为每周的第一天
        cal.setGridVisible(True)  # 显示网格线
        cal.setDateRange(QDate(1949, 1, 1), QDate(2049, 1, 1))  # 设置日历涵盖的日期范围,从1949.1.1-2049.1.1
        self.setGeometry(300, 300, 350, 300)
        self.setWindowTitle('Calendar')
        self.show()
app = QApplication(sys.argv)  # 创建应用程序
ex = Example()  # 创建窗口对象
sys.exit(app.exec_())  # 设置关闭窗口后结束进程
拓展练习:尝试设置不显示网格。
小结 #
习题 #
- 习题1:尝试设置导航条为不可见。
- 习题2:尝试自定义更改日历涵盖的日期范围。