7 PyQt5 时间相关控件 ( QDateEdit, QTimeEdit, QDateTimeEdit,QCalendarWidget)

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_())

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值