前言
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,
从窗口组件中选定一个日期,会发射一个QCore.QDate信号,下面代码将此信号连接到自定义的槽函数
self.cal.clicked[QtCore.QDate].connect(self.showDate)
接下来通过调用selectedDate()方法检索所选择的日期,然后将日期对象转换为指定格式字符串并将其设置为标签控件内容
def showDate(self,date):
#设置标签的文本值并指定样式
self.lb1.setText(date.toString('yyyy-MM-dd dddd'))
源码以及相关文件下载:https://download.csdn.net/download/jia666666/10597897