一、QCalendarWidget简介
提供一个基于每月日历控件,允许用户选择一个日期。
二、QCalendarWidget功能作用
1、日期范围
(1)框架
(2)操作及展示
1 # 日期范围 2 # cw.setMinimumDate(QDate(1990,1,1)) # 最小日期 3 # cw.setMaximumDate(QDate(2050,12,31)) # 最大日期 4 cw.setDateRange(QDate(1990, 1, 1), QDate(2050, 12, 31)) # 范围 5 cw.setSelectedDate(QDate(2022, 1, 1)) # 设置当前显示日期
2、日期编辑
(1)框架
(2)操作及展示
1 # 日期编辑 2 # cw.setDateEditEnabled(False) # 关闭日期编辑状态 3 cw.setDateEditAcceptDelay(3000) # 设置编辑后的延迟时间
3、日期获取
(1)框架
(2)操作及展示
1 # 日期的获取 2 btn = QPushButton(self) 3 btn.setText("测试按钮") 4 btn.move(400, 100) 5 btn.clicked.connect(lambda: print(cw.monthShown())) # 展示月份 6 btn.clicked.connect(lambda: print(cw.yearShown())) # 展示年份 7 btn.clicked.connect(lambda: print(cw.selectedDate())) # 展示年份
4、格式外观
(1)框架
(2)操作及展示
1 # 格式外观 2 cw.setNavigationBarVisible(False) # 设置导航条不可见 3 cw.setFirstDayOfWeek(Qt.Sunday) # 设置一周的第一天为周日 4 cw.setGridVisible(True) # 设置网格可见 5 6 tcf = QTextCharFormat() 7 tcf.setFontFamily("隶书") 8 tcf.setFontPointSize(8) 9 tcf.setFontUnderline(True) 10 cw.setHeaderTextFormat(tcf) # 设置日历水平头和垂直头格式文本 11 12 # cw.setHorizontalHeaderFormat(QCalendarWidget.LongDayNames) # 设置水平头的样式(星期几) 13 # cw.setHorizontalHeaderFormat(QCalendarWidget.NoHorizontalHeader) # 隐藏水平头 14 15 cw.setVerticalHeaderFormat(QCalendarWidget.NoVerticalHeader) # 隐藏垂直头 16 17 t_tcf = QTextCharFormat() 18 t_tcf.setFontPointSize(20) 19 t_tcf.setToolTip("这是星期二") 20 cw.setWeekdayTextFormat(Qt.Tuesday, t_tcf) # 设置某一星期几的一列格式 21 cw.setDateTextFormat(QDate(2020, 5, 3), t_tcf) # 设置某一天的格式
5、选中
(1)框架
(2)操作及展示
1 # 选中 2 cw.setSelectionMode(QCalendarWidget.NoSelection) # 不能选择日期 3 cw.setSelectedDate(QDate(2019,12,12)) # 选择具体的日期
6、常用的方法
(1)框架
(2)操作及展示
1 # 常用的方法 2 btn = QPushButton(self) 3 btn.setText("测试按钮") 4 btn.move(400, 100) 5 6 # btn.clicked.connect(cw.showToday) # 跳转展示这一天对应的那一页(月) 7 # btn.clicked.connect(cw.selectedDate) # 跳转到选中的那一天 8 # btn.clicked.connect(cw.showNextYear) # 展示下一年 9 # btn.clicked.connect(cw.showNextMonth) # 展示下一个月 10 btn.clicked.connect(lambda: cw.setCurrentPage(2008, 8)) # 展示某一年某一月页面
7、信号
(1)框架
(2)操作及展示
1 # 信号 2 # cw.activated.connect(lambda date:print(date)) 3 # cw.clicked.connect(lambda date:print(date)) 4 # cw.currentPageChanged.connect(lambda y,m:print(y,m)) 5 cw.selectionChanged.connect(lambda: print("选中的日期发生改变", cw.selectedDate()))