QCalendar:一个日历控件,提供了一个基于月份的视图,允许用户点击鼠标选择日期,默认选中时今天的日期。
常用方法
|
setDateRange() |
设置日期范围供选择 |
|
setFirstDayOfWeek() |
重新设置星期的第一天,默认时星期日 Qt.Monday Qt.Tuesday Qt.Wednesday Qt.Thursday Qt.Friday Qt.Saturday Qt.Sunday |
|
setMinimumDate() |
设置最小日期 |
|
setMaximumDate() |
设置最大日期 |
|
setSelectedDate() |
设置一个QDate对象,作为日期控件所选定的日期 |
|
maximumDate() |
获取日历控件的最大日期 |
|
minimumDate() |
获取日历控件的最小日期 |
|
selectedDate() |
返回当前选定的日期 |
|
setGridvisible() |
设置日历控件是否显示网格 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #QCalendar日历时间实例 # -*- coding: utf-8 -*- import sys,math,os from PyQt5 import QtCore from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * 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.lbl=QLabel(self) date=self.cal.selectedDate() self.lbl.setText(date.toString("yyyy-MM-dd dddd")) self.lbl.move(20,300) self.setGeometry(100,100,400,350) self.setWindowTitle("日历") def showDate(self,date): self.lbl.setText(date.toString("yyyy-MM-dd dddd")) if __name__=="__main__": app=QApplication(sys.argv) demo=CalendarExample() demo.show() sys.exit(app.exec_()) |
- QDateTimeEdit:是一个允许用户编辑日期时间的控件,可使用键盘上下箭头来增加或减少日期的时间值。
两个子类 QDateEdit、QTimeEdit
- QDateEdit用来编辑控件的日期,仅包括年、月、日。设置时需要注意 :
dateEdit=QDateEdit(self)
dateEdit.setDisplayFormat("yyyy-MM-dd")
- QTimeEdit用来编辑控件的时间,时、分、秒:
timeedit=QTimeEdit(self)
timeedit.setDisplayFormat("HH:mm:ss")
常用方法
|
setDisplayFormat() |
设置日期时间格式 yyyy:代表年份,四位数表示 MM:代表月份取值范围为01-12 dd:代表日,取值范围 01-31 HH:代表小时,取值范围00-23 mm:代表分钟取值范围 00-59 ss:代表秒 取值范围00-59 |
|
setMinimumDate() |
设置控件最小日期 |
|
setMaximumDate() |
设置控件最大日期 |
|
time() |
返回编辑时间 |
|
date() |
返回编辑日期 |
常用信号
|
dateChanged |
日期改变时触发 |
|
dateTimeChanged |
日期时间改变时触发 |
|
timeChanged |
时间改变时触发 |
注:用来弹出日历的类只有QDateTimeEdit、QDateEdit
1 2 3 4 | dateTimeEdit=QDateTimeEdit(self) dateTimeEdit.setCalendarPopup(true) dateEdit=QDateEdit(self) dateEdit.setCalendarPopup(true) |
若在初始化QDateTimeEdit时在构造函数中不指定时间,系统回味起设置一个很本地时间相同的日期时间格式且值为 2000年1月1日0时0分0秒,通过QDateTimeEdit提供的槽函数设置setDateTime()、setDate()、setTime()
1 2 3 4 5 | dateTimeEdit=QDateTimeEdit(self) dateTimeEdit2=QDateTimeEdit(QDateTime.currentDateTime(),self) dateEdit=QDateTimeEdit(QDate.currentDate(),self) timeEdit=QDateTimeEdit(QTime.currentTime(),self) |
设置自定义的日期、时间格式
1 2 3 4 5 6 7 8 9 10 11 | dateTimeEdit=QDateTimeEdit(self) dateTimeEdit2=QDateTimeEdit(QDateTime.currentDateTime(),self) dateEdit=QDateTimeEdit(QDate.currentDate(),self) timeEdit=QDateTimeEdit(QTime.currentTime(),self) #设置日期时间 dateTimeEdit.setDisplayFormat("yyyy-MM-dd HH:mm:ss") dateTimeEdit2.setDisplayFormat("yyyy/MM/dd HH-mm-ss") dateEdit.setDisplayFormat("yyyy.MM.dd") timeEdit.setDisplayFormat("HH:mm:ss") |
设置日期时间范围
1 2 3 4 5 6 7 | dateEdit=QDateTimeEdit(QDateTime.currentDateTime(),self) dateEdit.setDisplayFormat("yyyy-MM-dd HH:mm:ss") #设置最小日期 dateEdit.setMinimumDate(QDate.currentDate().addDays(-365)) #设置最大日期 dateEdit.setMaximumDate(QDate.currentDate().addDays(365)) |
- 弹出日历
1 2 3 4 5 | dateTimeEdit=QDateTimeEdit(QDateTime.currentDateTime(),self) dateTimeEdit.setMinimumDate(QDate.currentDate().addDays(-365)) dateTimeEdit.setMaximumDate(QDate.currentDate().addDays(365)) dateTimeEdit.setCalendarPopup(True) |
- 获取日期时间
可以通过date()、dateTime()等方法获取日期时间对象。
获取年月日可调用QDate()的year()、month()、day()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | dateTime=self.dateEdit.dateTime() maxDate=self.dateEdit.maximumDate() minDate=self.dateEdit.minimumDate() maxTime=self.dateEdit.maxmumTime() minTime=self.dateEdit.minimumDateTime() minDateTime=self.dateEdit.minimumDateTime() #各种输出 print("dateTime=%s" % str(dateTime)) print("maxDate=%s" % str(maxDate)) print("minDate=%s" % str(minDate)) print("maxTime=%s" % str(maxTime)) print("minTime=%s" % str(minTime)) print("minDateTime=%s" % str(minDateTime)) |
信号槽函数
1 2 3 | dateEdit.dateChanged.connect(self.onDateChanged) dateEdit.dateTimeChanged.connect(self.onDateTimeChanged) dateEdit.timeChanged.connect(sel.onTimeChanged) |
槽函数
1 2 3 4 5 6 7 8 9 | #日期发生改变时 def onDateChanged(self,date): print(date) #无论时日期还是时间发生改变都会执行 def onDateTimeChanged(self,dateTime): print(dateTime) #时间发生改变执行 def onTimeChanged(self,time) : print(time) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | #QDateTimeEdit日历时间实例 # -*- coding: utf-8 -*- import sys,math,os from PyQt5 import QtCore from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * class DateTimeEditDemo(QWidget): def __init__(self): super(DateTimeEditDemo, self).__init__() self.initUI() def initUI(self): self.setWindowTitle('QDateTimeEdit案例') self.resize(300,90) vlayout=QVBoxLayout() self.dateEdit=QDateTimeEdit(QDateTime.currentDateTime(),self) self.dateEdit.setDisplayFormat("yyyy-MM-dd HH:mm:ss") #设置最小日期 self.dateEdit.setMinimumDate(QDate.currentDate().addDays(-365)) #设置最大日期 self.dateEdit.setMaximumDate(QDate.currentDate().addDays(365)) self.dateEdit.setCalendarPopup(True) self.dateEdit.dateChanged.connect(self.onDateChanged) self.dateEdit.dateTimeChanged.connect(self.onDateTimeChanged) self.dateEdit.timeChanged.connect(self.onTimeChanged) self.btn=QPushButton("获取的日期和时间") self.btn.clicked.connect(self.onButtonClick) vlayout.addWidget(self.dateEdit) vlayout.addWidget(self.btn) self.setLayout(vlayout) def onDateChanged(self,date): print(date) def onDateTimeChanged(self,dateTime): print(dateTime) def onTimeChanged(self,tiem): print(tiem) def onButtonClick(self): dateTime=self.dateEdit.dateTime() maxDate = self.dateEdit.maximumDate() minDate = self.dateEdit.minimumDate() maxTime = self.dateEdit.maximumTime() minTime = self.dateEdit.minimumTime() minDateTime = self.dateEdit.minimumDateTime() maxDateTime = self.dateEdit.maximumDateTime() # 各种输出 print("\n 选择日期时间") print("dateTime=%s" % str(dateTime)) print("maxDate=%s" % str(maxDate)) print("minDate=%s" % str(minDate)) print("maxTime=%s" % str(maxTime)) print("minTime=%s" % str(minTime)) print("maxDateTime=%s" % str(maxDateTime)) print("minDateTime=%s" % str(minDateTime)) if __name__=="__main__": app=QApplication(sys.argv) demo=DateTimeEditDemo() demo.show() sys.exit(app.exec_()) |