PyQt5之QDateTimeEdit
QDateTimeEdit是一个允许用户编辑日期时间的控件,可以使用键盘来增加或减少日期时间值。QDateTimeEdit通过
setDisplayFormat()
函数来设置显示的日期时间格式。
一、QDateTimeEdit中的常用方法
方法 | 描述 |
---|---|
setDisplayFormat() | 设置日期格式:yyyy(代表年份,用4位数表示)、MM(代表月份,取值范围为01 ~ 12)、dd(代表日,取值范围为01 ~ 31)、HH(代表小时,取值范围为00 ~ 23)、mm(代表分钟,取值范围为00 ~ 59)、ss(代表秒,取值范围为00 ~ 59) |
setMinimumDate() | 设置控件的最小日期 |
setMaximumDate() | 设置控件的最大日期 |
time() | 返回编辑的时间 |
date() | 返回编辑的日期 |
二、QDateTimeEdit中的常用信号
信号 | 含义 |
---|---|
dateChanged | 当日期改变时发射此信号 |
dateTimeChanged | 当日期时间改变时发射此信号 |
timeChanged | 当时间改变时发射此信号 |
三、QDateTimeEdit
- QDateTimeEdit的子类:
QDateEdit
和QTimeEdit
类均继承自QDateTimeEdit类,它们的许多功能特性都由QDateTimeEdit提供。
注:QDateEdit
用来编辑控件的日期,仅包括年、月、日;QTimeEdit
用来编辑控件的时间,仅包括小时、分钟和秒。
dateEdit = QDateEdit(self)
timeEdit = QTimeEdit(self)
dateEdit.setDisplayFormat("yyyy-MM-dd")
timeEdit.setDisplayFormat("HH:mm:ss")
- 初始化QDateTimeEdit类:
在默认情况下,如果QDateTimeEdit类构造时不指定日期时间,那么系统会为其设置一个和本地相同的日期时间格式,并且值为
2000年1月1日0时0分0秒
,也可以手动指定控件显示的日期时间。除了通过构造函数指定所显示的日期时间外,也可以根据QDateTimeEdit提供的槽函数来设置,比如setDateTime()
、setDate()
、setTime()
函数。
dateTimeEdit = QDateTimeEdit(self)
dateTimeEdit2 = QDateTimeEdit(QDateTime.currentDateTime(),self)
dateEdit = QDateTimeEdit(QDate.currentDate(),self)
timeEdit = QDateTimeEdit(QTime.currentTime(),self)
- 设置日期时间格式:
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")
四、QDateTimeEdit的使用
import sys,math
from PyQt5 import QtCore
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class Win(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(300, 300,400, 380)
self.setWindowTitle('QDateTimeEdit的使用')
layout = 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)
layout.addWidget(self.dateEdit)
layout.addWidget(self.btn)
self.setLayout(layout)
def onDateChanged(self,date):
print(date)
def onDateTimeChanged(self,dateTime):
print(dateTime)
def onTimeChanged(self,time):
print(time)
def onButtonClick(self):
dateTime = self.dateEdit.dateTime()
maxDate = self.dateEdit.maximumDate()
maxDateTime = self.dateEdit.maximumDateTime()
maxTime = self.dateEdit.maximumTime()
minDate = self.dateEdit.minimumDate()
minDateTime = self.dateEdit.minimumDateTime()
minTime = self.dateEdit.minimumTime()
print('\n选择日期时间')
print('dateTime=%s' % str(dateTime))
print('maxDate=%s' % str(maxDate))
print('maxDateTime=%s' % str(maxDateTime))
print('maxTime=%s' % str(maxTime))
print('minDate=%s' % str(minDate))
print('minDateTime=%s' % str(maxDateTime))
print('minTime=%s' % str(maxTime))
if __name__ == "__main__":
app = QApplication(sys.argv)
form = Win()
form.show()
sys.exit(app.exec_())
运行效果如下: