QCalendar(二十二)

QCalendar

前言

QCalendar是一个日历控件,它提供了一个基于月份的视图,允许用户通过鼠标或键盘选择日期,默认选中的是今日的日期。也可以对日期的范围进行规定

QCalendar类中常用的方法

方法 描述
seTDateRange() 设置日期可供选择的范围
setFirstDayWeek() 重新设置星期的第一天,默认是星期天,其参数枚举值如下
Qt.Monday:星期一
Qt.Tudesday:星期二
Qt.Wednesday:星期三
Qt.Thursday:星期四
Qt.Friday:星期五
Qt.Saturday:星期六
Qt.Sunday:星期日
setMinimumDate() 设置最大日期
setMaximumDate() 设置最小日期
setSelectedDate() 设置一个QDate对象,作为日期控件所选定的日期
minimumDate() 获取日历控件的最小日期
maximumDate() 获取日历控件的最大日期
selectedDate() 返回当前选定的日期
setGridvisible() 设置日历控件是否显示网格

QCalendar的使用

import sys

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5 import QtCore
from PyQt5.QtCore import QDate

class CalendarExample( QWidget):
    def __init__(self):
        super(CalendarExample, self).__init__()
        self.initUI()
    def initUI(self):
        #实例化日历控件
        self.cal = QCalendarWidget(self)
        #设置日历的最小日期
        self.cal.setMinimumDate(QDate(1980,1,1))
        #设置日历的最大日期
        self.cal.setMaximumDate(QDate(3000,1,1))
        #设置日历的网格是否可见
        self.cal.setGridVisible(True)
        #控件位置移动
        self.cal.move(20,20)
        #点击绑定自定义的槽函数
        self.cal.clicked[QtCore.QDate].connect(self.showDate)

        #创建标签
        self.lb1=QLabel(self)
        #设置标签的文本为日历控件所选中的日期,并转为str数据显示
        date=self.cal.selectedDate()
        self.lb1.setText(date.toString('yyyy-MM-dd dddd'))

        #标签移动位置
        self.lb1.move(20,300)
        #设置主窗口的位置及初始大小和标题
        self.setGeometry(200,100,400,350)
        self.setWindowTitle('Calendar例子')

    def showDate(self,date):
        #设置标签的文本值
        self.lb1.setText(date.toString('yyyy-MM-dd dddd'))
if __name__ == '__main__':
    app=QApplication(sys.argv)
    demo=CalendarExample()
    demo.show()
    sys.exit(app.exec_())

运行程序,显示效果如图
这里写图片描述

代码分析

在这个例子中有日历控件和标签控件,当前选定的日期显示在标签控件中
以下代码创建QCalendar控件,并设置最大日期和最小日期

        #实例化日历控件
        self.cal = QCalendarWidget(self)
        #设置日历的最小日期
        self.cal.setMinimumDate(QDate(1980,1,1))
        #设置日历的最大日期
        self.cal.setMaximumDate(QDate(3000,1,1))

从窗口组件中选定一个日期,会发射一个QCore.QDate信号,下面代码将此信号连接到自定义的槽函数

self.cal.clicked[QtCore.QDate].connect(self.showDate)

接下来通过调用selectedDate()方法检索所选择的日期,然后将日期对象转换为指定格式字符串并将其设置为标签控件内容

 def showDate(self,date):
        #设置标签的文本值并指定样式
        self.lb1.setText(date.toString('yyyy-MM-dd dddd'))

猜你喜欢

转载自blog.csdn.net/jia666666/article/details/81588749