- 创建日历
主要内容 #
完成效果 #
本节课程是万年历实现的第一节,完成本节课程,能实现创建日历对象并自定义效果。
收获 #
学习完本节内容,我们会创建一个日历,并且自定义各项设置。
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:尝试自定义更改日历涵盖的日期范围。