在前面两章我们总结了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_())
秒表

相关文章: