在前面两章我们总结了QSpinBox和QDoubleSpinBox的用法,今天来总结一下QDateTimeEdit控件的基本用法
一.描述
1.QDateTimeEdit是一个用来编辑日期和时间的单行文本框,由于大继承自QAbstractSpinBox类,可以用箭头按钮来调节文本内容,也可以用键盘输入。在用按钮修改内容时可以单独修改某个部分(年、月、日、小时、分)
2.QDateTimeEdit可以用来单独显示日期(QDate),也可以单独显示时间(QTime),当然也可以显示日期时间(QDateTime)
二.QDateTime的使用
QDateTime是用来描述日期和时间的对象,他是QDate和QTime两个类的组合,包含了年月日/小时分秒毫秒。
构造,按照下面的方式构造对象都是可以的。
date = QDate(2019, 5, 29)
time = QTime(15, 33)
date_time = QDateTime(date)
date_time = QDateTime(date, time)
date_time = QDateTime(2019, 5, 29, 15, 33)
日期时间的调整API
date_time = QDateTime(2019,5,26,15,25) date_time.addYears() #增加年 date_time.addMonths() #增加月 date_time.addDays() #增加日 date_time.addSecs() #增加秒 date_time.addMSecs() #增加毫秒 date_time.setDate() date_time.setTime()
前面几个增加的是有返回值的,并不是把原有的date_time修改,需要对其重新赋值
date_time = date_time.addYears(3)
函数传递的参数可以是负值,就是减少相应的值。
date_time = date_time.addYears(-3) #减少3年
计算时间差
QDateTime.offsetFromUtc() #到标准时区的时间差(秒) QDate.daysTo(QDate) #相差天数
获取时间
date = QDate.currentDate() time = QTime.currentTime() date_time = QDateTime.currentDateTime() date.day() # 这个月的第几日 date.month() # 哪个月 date.year() # 第几年 date.dayOfWeek() # 一周的第几日(星期几) date.daysInMonth() # 所在月有多少天 date.daysInYear() # 所在年有多少天
计时功能
time = QTime.currentTime() time.start() #创建计时开始点 time.elapsed() #获取到开始点的时间差 time.restart() #重新设置计时点
可以利用上面的特点做一个秒表(只有功能,不计效果)
from PyQt5.Qt import * import sys class Window(QWidget): def __init__(self): super().__init__() self.UI_SetUp() def UI_SetUp(self): time = QTime.currentTime() time.start() self.btn_start = QPushButton('计时开始',self) self.btn_start.move(100,200) self.btn_restart = QPushButton('重新开始计时',self) self.btn_restart.move(100,250) self.btn_time = QPushButton('计时',self) self.btn_time.move(100,300) self.btn_time.setEnabled(False) self.label = QLabel(self) self.label.move(200,200) self.btn_start.clicked.connect(self.start) self.btn_time.clicked.connect(self.get_time) self.btn_restart.clicked.connect(self.restart) pass def start(self): self.time = QTime.currentTime() self.time.start() # self.label.setText('计时开始') self.label.adjustSize() self.btn_time.setEnabled(True) def get_time(self): # print(self.time.elapsed()) data = self.label.text() print(data) self.label.setText(data +'\n'+ str(self.time.elapsed())) self.label.adjustSize() def restart(self): del self.time self.label.setText('') self.btn_time.setEnabled(False) if __name__ =='__main__': app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())