python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例


Posted in Python onFebruary 27, 2020

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() 返回编辑的日期

PyQt5日期时间控件QDateTimeEdit实例一

import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import QDate,  QDateTime , QTime

class DateTimeEditDemo(QWidget):
  def __init__(self):
    super(DateTimeEditDemo, self).__init__()
    self.initUI()

  def initUI(self):
    #设置窗口的标题与初始大小
    self.setWindowTitle('QDateTimeEdit例子')
    self.resize(300, 90)

    #垂直布局
    vlayout = QVBoxLayout()

    #实例化编辑时间日期的控件

    #默认下,不指定日期的时间,系统会设置一个和本地相同的日期时间格式,时间默认2000年1月1日0时0分0秒
    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")

    #布局控件添加,设置主窗口的布局
    vlayout.addWidget( dateTimeEdit )
    vlayout.addWidget( dateTimeEdit2)
    vlayout.addWidget( dateEdit )
    vlayout.addWidget( timeEdit )
    self.setLayout(vlayout)

if __name__ == '__main__':
  app = QApplication(sys.argv)
  demo = DateTimeEditDemo()
  demo.show()
  sys.exit(app.exec_())

PyQt5日期时间控件实例一代码解析:

在默认情况下,如果QDateTimeEdit类构造时不指定日期时间,那么系统会为其设置一个和本地相同的日期时间格式,并且值为2000年1月1日0时0分0秒,也可以手动指定控件显示的日期时间

#默认下,不指定日期的时间,系统会设置一个和本地相同的日期时间格式,时间默认2000年1月1日0时0分0秒
    dateTimeEdit = QDateTimeEdit(self)
    #指定当前日期时间为控件的日期时间
    dateTimeEdit2 = QDateTimeEdit(QDateTime.currentDateTime(), self)
    #指定当前地日期为控件的日期,注意没有指定时间
    dateEdit = QDateTimeEdit(QDate.currentDate(), self)
    #指定当前地时间为控件的时间,注意没有指定日期
    timeEdit = QDateTimeEdit(QTime.currentTime(), self)

效果如下图

python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例

设置日期时间格式,如果不想使用系统默认的格式,可以通过setDisplayFormat()来定义日期时间格式

# 设置日期时间格式,可以选择/ . : -等符号自定义数据连接符
    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")

显示效果如图

python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例

PyQt5日期时间控件QDateTimeEdit实例二

import sys
from PyQt5.QtCore import QDate,QDateTime,QTime
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *

class DateTimeEditDemo(QWidget):
  def __init__(self):
    super(DateTimeEditDemo, self).__init__()
    self.initUI()
  def initUI(self):
    #设置标题与初始大小
    self.setWindowTitle('QDateTimeEdit 例子')
    self.resize(300,90)

    #垂直布局
    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('日期时间=%s' %str(dateTime))
    print('最大日期=%s'%str(maxDate))
    print('最大日期时间=%s'%str(maxDateTime))
    print('最大时间=%s'%str(maxTime))
    print('最小日期=%s'%str(minDate))
    print('最小日期时间=%s'%str(minDateTime))
    print('最小时间=%s'%str(minTime))

if __name__ == '__main__':
  app=QApplication(sys.argv)
  demo=DateTimeEditDemo()
  demo.show()
  sys.exit(app.exec_())

效果图如下

python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例

PyQt5日期时间控件QDateTimeEdit实例二代码分析

QDateEdit和QTimeEdit均继承自QDateTimeEdit类,他们的许多特性和功能都有QDateTimeEdit类提供,设置格式是要注意:

QDateEdit用来编辑控件的日期,年月日

QTimeEdit用来编辑控件的时间,时分秒

如果要同时操作日期时间,请使用QDateTimeEdit

设置弹出日历时要注意:用来弹出日历的类只有QDateTimeEdit和QDateEdit,而QTimeEdit类虽然在语法上可以设置弹出日历,但是不起作用………………

#设置日历控件允许弹出
self.dateEdit.setCalendarPopup(True)

设置日期时间范围,设置日期时间为今天,日历游戏范围为:【今天-365,今天+365】

#设置日期最大值与最小值,在当前日期的基础上,后一年与前一年
self.dateEdit.setMinimumDate(QDate.currentDate().addDays(-365))
self.dateEdit.setMaximumDate(QDate.currentDate().addDays(365))

获取日期时间

可以通过date(),datetime()等方法来获取日期时间对象,如果要获取年月日等信息,则可以调用QDate的year(),month(),day()等函数

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('日期时间=%s' %str(dateTime))
    print('最大日期=%s'%str(maxDate))
    print('最大日期时间=%s'%str(maxDateTime))
    print('最大时间=%s'%str(maxTime))
    print('最小日期=%'%str(minDate))
    print('最小日期时间=%s'%str(minDateTime))
    print('最小时间=%s'%str(minTime))

信号与槽函数

QDateTimeEdit控件常用的信号是dateChanged,dateTimeChanged,TimeChanged,分别在改变日期,日期时间,时间时发射

通过以下代码设置控件的信号连接槽函数

#当日期改变时触发槽函数
    self.dateEdit.dateChanged.connect(self.onDateChanged)
    #当日期时间改变时触发槽函数
    self.dateEdit.dateTimeChanged.connect(self.onDateTimeChanged)
    #当时间改变时触发槽函数
    self.dateEdit.timeChanged.connect(self.onTimeChanged)

槽函数如下

#日期发生改变时执行
  def onDateChanged(self,date):
    #输出改变的日期
    print(date)
  #无论是日期还是时间改变都执行
  def onDateTimeChanged(self,dateTime):
    #输出改变的日期时间
    print(dateTime)
  #时间发生改变执行
  def onTimeChanged(self,time):
    #输出改变的时间
    print(time)

本文详细介绍PyQt5日期时间控件QDateTimeEdit详细使用方法与实例,更多关于PyQt5日期时间控件的使用方法请查看下面的相关链接

Python 相关文章推荐
python 实现文件的递归拷贝实现代码
Aug 02 Python
Pycharm编辑器技巧之自动导入模块详解
Jul 18 Python
详解python中asyncio模块
Mar 03 Python
使用pandas读取csv文件的指定列方法
Apr 21 Python
python实现抖音点赞功能
Apr 07 Python
了解不常见但是实用的Python技巧
May 23 Python
python 读取更新中的log 或其它文本方式
Dec 24 Python
最新Python idle下载、安装与使用教程图文详解
Nov 28 Python
基于python+selenium自动健康打卡的实现代码
Jan 13 Python
Python基础之tkinter图形化界面学习
Apr 29 Python
Python中Selenium对Cookie的操作方法
Jul 09 Python
Python使用openpyxl模块处理Excel文件
Jun 05 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
Feb 27 #Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
Feb 27 #Python
Python 之 Json序列化嵌套类方式
Feb 27 #Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
Feb 27 #Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
Feb 27 #Python
python脚本实现mp4中的音频提取并保存在原目录
Feb 27 #Python
python列表切片和嵌套列表取值操作详解
Feb 27 #Python
You might like
在CentOS上搭建LAMP+vsftpd环境的简单指南
2015/08/01 PHP
php数值转换时间及时间转换数值用法示例
2017/05/18 PHP
Laravel中的chunk组块结果集处理与注意问题
2018/08/15 PHP
Laravel中正确地返回HTTP状态码方法示例
2019/09/10 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
2019/09/29 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
如何让动态插入的javascript脚本代码跑起来。
2007/01/09 Javascript
javascript利用apply和arguments复用方法
2013/11/25 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
浅析JavaScript中作用域和作用域链
2016/12/06 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
React中使用collections时key的重要性详解
2017/08/07 Javascript
jQuery中.attr()和.data()的区别分析
2017/09/03 jQuery
React Native预设占位placeholder的使用
2017/09/28 Javascript
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
2017/09/28 Javascript
使用JS判断移动端手机横竖屏状态
2018/07/30 Javascript
jQuery.validate.js表单验证插件的使用代码详解
2018/10/22 jQuery
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
微信小程序实现判断是分享到群还是个人功能示例
2019/05/03 Javascript
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
js模拟实现烟花特效
2020/03/10 Javascript
spark dataframe 将一列展开,把该列所有值都变成新列的方法
2019/01/29 Python
python实现提取str字符串/json中多级目录下的某个值
2020/02/27 Python
Python实现Wordcloud生成词云图的示例
2020/03/30 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
pytorch  网络参数 weight bias 初始化详解
2020/06/24 Python
您的健身减肥和健康饮食专家:vitafy
2017/06/06 全球购物
大学生护理专业自荐信
2013/10/03 职场文书
给水工程专业毕业生自荐信
2014/01/28 职场文书
红头文件任命书范本
2014/06/05 职场文书
2014年电厂工作总结
2014/12/04 职场文书
银行自荐信范文
2015/03/25 职场文书
中学教师读书笔记
2015/07/01 职场文书
2015年学校消防安全工作总结
2015/10/14 职场文书
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL