日历控件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_())

 

转载于:https://www.cnblogs.com/liming19680104/p/10361578.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值