1 QTimeEdit
QTimeEdit(const QTime &time, QWidget *parent = Q_NULLPTR)
对于QTime常用API
静态方法:
2 QDateEdit
QDateEdit(QWidget *parent = Q_NULLPTR)
QDateEdit(const QDate &date, QWidget *parent = Q_NULLPTR)
对于QDate常用API:
3 QDateTimeEdit
和上面两个非常类似
4 QCalendarWidget
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt,QTime,QDate,QDateTime
import sys
class DemoTime(QWidget):
def __init__(self):
super(DemoTime, self).__init__()
self.setWindowTitle("时间日期")
self.setFixedSize(1000,400)
self.mainlayout = QHBoxLayout(self)
self.group01 = QGroupBox("日期时间")
self.group02 = QGroupBox("日历选择")
self.mainlayout.addWidget(self.group01)
self.mainlayout.addWidget(self.group02)
self._uiinit_01()
self._uiinit_02()
#信号槽
self.timeupdate.clicked.connect(self.on_timeupdate_clicked)
self.dateupdate.clicked.connect(self.on_dateupdate_clicked)
self.datetimeupdate.clicked.connect(self.on_datetimeupdate_clicked)
self.time_btn.clicked.connect(self.on_time_btn_clicked)
def _uiinit_01(self):
clildlayout01 = QGridLayout(self.group01)
self.time_btn = QPushButton("读取当前时间日期")
self.timelabel = QLabel("字符串显示")
clildlayout01.addWidget(self.time_btn,0,0,1,2)
clildlayout01.addWidget(self.timelabel, 0, 2, 1, 2)
clildlayout01.addWidget(QLabel("时间:"),1,0,1,1)
self.timeedit = QTimeEdit(self.group01)
self.timeedit.setDisplayFormat("HH:mm:ss") #设置时间显示格式
self.timeedit.setTime(QTime.currentTime())
self.timeedit_text = QLineEdit(QTime.currentTime().toString("HH:mm:ss"))
self.timeupdate = QPushButton("设置时间")
clildlayout01.addWidget(self.timeedit, 1, 1, 1, 1)
clildlayout01.addWidget(self.timeedit_text, 1, 2, 1, 1)
clildlayout01.addWidget(self.timeupdate, 1, 3, 1, 1)
#日期
clildlayout01.addWidget(QLabel("日期:"), 2, 0, 1, 1)
self.dateedit = QDateEdit(QDate.currentDate())
self.dateedit.setDisplayFormat("yyyy-MM-dd")
self.dateedit.setMinimumDate(QDate.currentDate().addDays(-3652))
self.dateedit.setMaximumDate(QDate.currentDate().addDays(3652))
self.dateedit_text = QLineEdit( QDate.currentDate().toString("yyyy-MM-dd"))
self.dateupdate = QPushButton("设置日期")
clildlayout01.addWidget(self.dateedit, 2, 1, 1, 1)
clildlayout01.addWidget(self.dateedit_text, 2, 2, 1, 1)
clildlayout01.addWidget(self.dateupdate, 2, 3, 1, 1)
#时间日期
clildlayout01.addWidget(QLabel("时间日期:"), 3, 0, 1, 1)
self.datetimeedit = QDateTimeEdit()
self.datetimeedit.setDisplayFormat("yyyy-MM-dd HH:mm:ss")
self.datetimeedit.setDateTime(QDateTime.currentDateTime())
self.datetimeedit_text = QLineEdit(QDateTime.currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))
self.datetimeupdate = QPushButton("设置时间日期")
clildlayout01.addWidget(self.datetimeedit, 3, 1, 1, 1)
clildlayout01.addWidget(self.datetimeedit_text, 3, 2, 1, 1)
clildlayout01.addWidget(self.datetimeupdate, 3, 3, 1, 1)
clildlayout01.setRowStretch(4,4)
def _uiinit_02(self):
clildlayout02 = QGridLayout(self.group02)
clildlayout02.addWidget(QLabel("选择的日期: "),0,0,1,1)
self.lineedit = QLineEdit()
clildlayout02.addWidget(self.lineedit,0,1,1,1)
self.calendar = QCalendarWidget(self.group02)
self.calendar.setDateRange(QDate(2020, 1, 1), QDate(2099, 1, 1)) # 设置日期范围
clildlayout02.addWidget(self.calendar,1,0,1,2)
self.btn_quit = QPushButton("退出")
clildlayout02.addWidget(self.btn_quit, 2, 0, 1, 2)
#信号槽
'''
void activated(const QDate &date)
void clicked(const QDate &date)
void currentPageChanged(int year, int month)
void selectionChanged()
'''
self.calendar.clicked.connect(self.calendar_clicked)
self.calendar.selectionChanged.connect(lambda: print('选中了新日期'))
self.btn_quit.clicked.connect(lambda : self.close())
def on_timeupdate_clicked(self):
self.timeedit.setTime( QTime.fromString(self.timeedit_text.text()))
def on_dateupdate_clicked(self):
date = QDate.fromString(self.dateedit_text.text(),"yyyy-MM-dd")
self.dateedit.setDate(date)
def on_datetimeupdate_clicked(self):
datetime = QDateTime.fromString(self.datetimeedit_text.text(),"yyyy-MM-dd HH:mm:ss" )
self.datetimeedit.setDateTime(datetime)
def on_time_btn_clicked(self):
self.timeedit.setTime( QTime.currentTime())
self.dateedit.setDate( QDate.currentDate())
self.datetimeedit.setDateTime(QDateTime.currentDateTime())
self.timeedit_text.setText( QTime.currentTime().toString("HH:mm:ss"))
self.dateedit_text.setText(QDate.currentDate().toString("yyyy-MM-dd"))
self.datetimeedit_text.setText(QDateTime.currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))
def calendar_clicked(self,date):
self.lineedit.setText(date.toString("yyyy-MM-dd"))
#设置日期
self.dateedit.setDate(date)
self.dateedit_text.setText(date.toString("yyyy-MM-dd"))
if __name__ == '__main__':
app = QApplication(sys.argv)
test = DemoTime()
test.show()
sys.exit(app.exec_())