QDateTimeEdit简介
QDateTimeEdit是一个允许用户编辑日期时间的控件,可以使用键盘上的上下箭头按钮来增加或者减少日期时间值,在默认情况下,创建QDateTimeEdit对象时不指定日期,那么系统会为其设置一个和本地相同的日期时间格式,并且值为2000年1月1日0时0分0秒,也可以手动指定控件显示的日期和时间。
QDateTimeEdit常用方法:
- setDisplayFormat(): 设置日期时间显示格式,(见日期时间格式);
- setMinimumDate(): 设置控件的最小日期;
- setMaximunDate(): 设置控件的最大日期;
- time(): 返回编辑的时间;
- date(): 返回编辑的日期。
日期时间格式:
- yyyy: 表示年份,用4位数表示;
- yy: 表示年份,用两位数表示;
- M: 表示月份,取值范围1-12, 没有前缀0;
- MM: 表示月份,取值范围01-12, 有前缀0;
- MMMM:表示月份,用本地语言显示 (汉语中显示,一月、二月...);
- d: 表示日期,取值范围1-31, 没有前缀0;
- dd: 表示日期,取值范围01-31, 有前缀0;
- ddd: 表示星期,局部缩写(如. 'Mon' to 'Sun');
- dddd: 表示星期,全称方式表示(如. 'Monday' to 'Sunday');
- hh: 表示小时,取值范围00-23;
- mm: 表示分钟,取值范围00-59;
- ss: 表示秒,取值范围00-59。
QDateTimeEdit常用信号:
- dateChanged: 当日期发生改变时发射此信号,并传递出日期;
- timeChanged: 当时间发生改变时发射此信号,并传递出时间;
- dateTimeChanged:当日期时间发生改变时发射此信号,并传递出日期时间;
- editingFinished: 结束编辑时发出的信号(回车,Tab,鼠标都可触发),不传递数据。
QDateTimeEdit类继承关系:

测试QDateTimeEdit
创建文件qdatetimeedit.py, 测试修改时间日期信息,并用QPlainTextEdit控件来显示信息。完整代码如下:
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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | import sys from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtCore import QDate, QTime, QDateTime from PyQt5.QtWidgets import (QApplication, QWidget, QDateTimeEdit, QPlainTextEdit, QPushButton, QVBoxLayout) class DemoDateTimeEdit(QWidget): def __init__(self, parent=None): super(DemoDateTimeEdit, self).__init__(parent) # 设置窗口标题 self.setWindowTitle('实战PyQt5: QDateTimeEdit Demo!') # 设置窗口大小 self.resize(400, 300) self.initUi() def initUi(self): #创建日期时间控件并设置显示格式 self.dtEdit = QDateTimeEdit(QDateTime.currentDateTime(), self) self.dtEdit.setDisplayFormat('yyyy-MM-dd HH:mm:ss') #设置日期的最大与最小值,在当前日期上,前后大约偏移10年 self.dtEdit.setMinimumDate(QDate.currentDate().addDays(-3652)) self.dtEdit.setMaximumDate(QDate.currentDate().addDays(3652)) #允许弹出日历控件 self.dtEdit.setCalendarPopup(True) #日期改变时触发 self.dtEdit.dateChanged.connect(self.onDateChanged) #时间改变时触发 self.dtEdit.timeChanged.connect(self.onTimeChanged) #日期时间发生改变时触发 self.dtEdit.dateTimeChanged.connect(self.onDateTimeChanged) #创建按钮,点击按钮,获取当前日期和时间 self.btnDateTimeInfo = QPushButton('日期时间信息') self.btnDateTimeInfo.clicked.connect(self.onButtonDateTimeClicked) #创建信息显示区域 self.textShower = QPlainTextEdit(self) self.textShower.setReadOnly(True) vLayout = QVBoxLayout(self) vLayout.setSpacing(10) vLayout.addWidget(self.dtEdit) vLayout.addWidget(self.btnDateTimeInfo) vLayout.addWidget(self.textShower) self.setLayout(vLayout) def onDateChanged(self, date): #年:月:日 [星期] self.showInfo(date.toString('yyyy:MM:dd [ddd]')) def onTimeChanged(self, time): self.showInfo(time.toString('hh:mm:ss')) def onDateTimeChanged(self, dateTime): self.showInfo(dateTime.toString('yyyy:MM:dd [ddd] hh:mm:ss')) def onButtonDateTimeClicked(self): #日期时间 dateTime = self.dtEdit.dateTime() #最大日期 maxDate = self.dtEdit.maximumDate() #最大日期时间 maxDateTime = self.dtEdit.maximumDateTime() #最大时间 maxTime = self.dtEdit.maximumTime() #最小日期 minDate = self.dtEdit.minimumDate() #最小日期时间 minDateTime = self.dtEdit.minimumDateTime() #最小时间 minTime = self.dtEdit.minimumTime() self.showInfo('日期和时间信息') self.showInfo('日期时间为: ' + dateTime.toString('yyyy:MM:dd [ddd] hh:mm:ss')) self.showInfo('最小日期为: ' + minDate.toString('yyyy:MM:dd [ddd]')) self.showInfo('最大日期为: ' + maxDate.toString('yyyy:MM:dd [ddd]')) self.showInfo('最小时间为: ' + minTime.toString('hh:mm:ss')) self.showInfo('最大时间为: ' + maxTime.toString('hh:mm:ss')) self.showInfo('最小日期时间为: ' + minDateTime.toString('yyyy:MM:dd [ddd] hh:mm:ss')) self.showInfo('最大日期时间为: ' + maxDateTime.toString('yyyy:MM:dd [ddd] hh:mm:ss')) def showInfo(self, strInfo:str): #print(strInfo) self.textShower.appendPlainText(strInfo) if __name__ == '__main__': app = QApplication(sys.argv) window = DemoDateTimeEdit() window.show() sys.exit(app.exec()) |
运行结果如下图:

测试QDateTimeEdit
本文知识点
- QDateTimeEdit基本用法;
- QDateTimeEdit弹出日历;
- Date, Time 格式转换;
- QPlainTextEdit显示文本信息。
前一篇: 实战PyQt5: 033-日历控件QCalendarWidget