日历控件QCalendarWidget_导航栏

样式:

日历控件QCalendarWidget_当前日期_02

 继承于 QWidget  

import sys
from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QLabel,QCalendarWidget
from PyQt5.QtCore import Qt,QDate
from PyQt5.QtGui import QTextCharFormat

class Demo(QWidget):
def __init__(self):
super().__init__()
self.resize(300,300)
self.setWindowTitle('QFontDialog')

self.label=QLabel('塘沽五中',self)
self.label.move(100,10)
self.btn=QPushButton('按钮',self)
self.btn.move(50,250)
self.btn.clicked.connect(self.AA)

self.cw=QCalendarWidget(self) #创建日历控件并显示
#默认当前日期

#setMinimumDate(QDate date) 设置最小日期
#minimumDate() -> QDate 返回最小日期

#setMaximumDate(QDate date) 设置最大日期
#maximumDate() -> QDate 返回最大日期

#setDateRange(QDate min, QDate max) 设置日期范围

self.cw.setDateEditEnabled(True) #是否允许键盘编辑日期
#True 允许;False 不允许 ;默认:允许
#isDateEditEnabled() -> bool 返回是否允许键盘编辑

self.cw.setDateEditAcceptDelay(3000) #键盘编辑的延迟时间

self.cw.setNavigationBarVisible(True) #导航栏是否可见--年和月是否可见
#默认-true 可见
#isNavigationBarVisible() -> bool 返回导航栏是否可见

self.cw.setFirstDayOfWeek(Qt.Monday) #设置一周的第一天
#Qt.Sunday 周日
#Qt.Monday 周一 默认
#firstDayOfWeek() -> Qt.DayOfWeek 返回一周的第一天

self.cw.setGridVisible(True) #网格是否可见
#默认 不可见
#isGridVisible() -> bool 返回网格是否可见

tcf=QTextCharFormat()
#看 https://i.cnblogs.com/EditPosts.aspx?postid=10357263
tcf.setFontPointSize(15)
self.cw.setHeaderTextFormat(tcf) #设置头部文本格式--水平头和垂直头都有效
#headerTextFormat() -> QTextCharFormat 返回头部文本格式

self.cw.setHorizontalHeaderFormat(QCalendarWidget.ShortDayNames) #设置水平头格式
#QCalendarWidget.LongDayNames 英文 Monday 中文 星期一
#QCalendarWidget.ShortDayNames 英文 Mon 中文 周一
#QCalendarWidget.SingleLetterDayNames 英文 M 中文 周
#QCalendarWidget.NoHorizontalHeader 隐藏水平头

self.cw.setVerticalHeaderFormat(QCalendarWidget.ISOWeekNumbers) #设置垂直头格式
#QCalendarWidget.ISOWeekNumbers 显示周数--默认
#QCalendarWidget.NoVerticalHeader 隐藏垂直头
#verticalHeaderFormat() -> QCalendarWidget.VerticalHeaderFormat 返回垂直头格式

self.cw.setWeekdayTextFormat(Qt.Tuesday, tcf) #指定星期n用指定的文本格式
#参数1 星期几 Qt.Tuesday 星期二
#参数2 QTextCharFormat格式

self.cw.setDateTextFormat(QDate(2019,6,20), tcf) #指定某一天用指定的格式
#参数1 指定的某一日
#参数2 QTextCharFormat格式

self.cw.setSelectionMode(QCalendarWidget.SingleSelection) #设置选择模式
#QCalendarWidget.NoSelection 用户无法选择日期--setSelectedDate可以设置
#QCalendarWidget.SingleSelection 可以选择单日期--默认

self.cw.setSelectedDate(QDate(1968,1,4)) #设置选中日期

#信号
#self.cw.activated.connect(self.BB) #只要用户按下Return或Enter键或双击日历小部件中的日期,就会发出此信号
#会向槽函数传递一个QDate值--PyQt5.QtCore.QDate(1968, 1, 24)

#self.cw.clicked.connect(self.BB) #单击有效日期时才会发出信号
# 会向槽函数传递一个QDate值--PyQt5.QtCore.QDate(1968, 1, 24)

self.cw.currentPageChanged.connect(self.CC) #当前显示的月份更改时会发出此信号。新的一年和一个月作为参数传递。
# 返回值:两个int 年和月 1968 7

self.cw.selectionChanged.connect(lambda :print('选择的日期更改了')) #当前选择的日期更改时会发出此信号

def BB(self,d):
print(d)
def CC(self,y,m):
print(y,m)
def AA(self):
#s=self.cw.monthShown() #返回当前显示的月份
# 5

#s=self.cw.yearShown() #返回当前显示的年份
#2009

#s=self.cw.selectedDate() #返回当前选中的日期
#PyQt5.QtCore.QDate(2019, 6, 17)

#self.cw.showToday() # 显示当前日期
#self.cw.showSelectedDate() #显示选中的日期
#self.cw.showNextYear() #显示下一年
#self.cw.showPreviousYear() #显示上一年
#self.cw.showNextMonth() #显示下一月
#self.cw.showPreviousMonth() #显示上一月
self.cw.setCurrentPage(1996, 3) #设置当前页
#参数1 年份
#参数2 月份

pass

if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())