PyQt5Day25--输入控件QClendarWidget(日期控件)

一、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()))
原文地址:https://www.cnblogs.com/fengxb1213/p/12821071.html