日历控件QCalendarWidget
样式:
继承于 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_())