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读取注册表中值的方法
Apr 08 Python
浅谈Python中函数的参数传递
Jun 21 Python
Django实现单用户登录的方法示例
Mar 28 Python
基于python二叉树的构造和打印例子
Aug 09 Python
python中树与树的表示知识点总结
Sep 14 Python
python计算Content-MD5并获取文件的Content-MD5值方式
Apr 03 Python
python中id函数运行方式
Jul 03 Python
python如何实现图片压缩
Sep 11 Python
pandas实现导出数据的四种方式
Dec 13 Python
完美解决Pycharm中matplotlib画图中文乱码问题
Jan 11 Python
Pytorch 如何加速Dataloader提升数据读取速度
May 28 Python
如何利用opencv判断两张图片是否相同详解
Jul 07 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
php 修改zen-cart下单和付款流程以防止漏单
2010/03/08 PHP
Function eregi is deprecated (解决方法)
2013/06/21 PHP
php中并发读写文件冲突的解决方案
2013/10/25 PHP
php实现根据url自动生成缩略图的方法
2014/09/23 PHP
支付宝服务窗API接口开发php版本
2016/07/20 PHP
JS 控制CSS样式表
2009/08/20 Javascript
NodeJS与Mysql的交互示例代码
2013/08/18 NodeJs
JS执行删除前的判断代码
2014/02/18 Javascript
纯js实现瀑布流布局及ajax动态新增数据
2016/04/07 Javascript
jQuery 局部div刷新和全局刷新方法总结
2016/10/05 Javascript
Javascript 跨域知识详细介绍
2016/10/30 Javascript
d3.js实现简单的网络拓扑图实例代码
2016/11/06 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
2017/02/06 Javascript
解决axios发送post请求返回400状态码的问题
2018/08/11 Javascript
vue2中,根据list的id进入对应的详情页并修改title方法
2018/08/24 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
2020/08/19 Javascript
如何在VUE中使用vue-awesome-swiper
2021/01/04 Vue.js
pycharm 代码自动补全的实现方法(图文)
2020/09/18 Python
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
HTML5重塑Web世界它将如何改变互联网
2012/12/17 HTML / CSS
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
欧洲最古老的鞋厂:Peter Kaiser
2019/11/05 全球购物
PPP协议组成及简述协议协商的基本过程
2015/05/28 面试题
《会变的花树叶》教学反思
2014/02/10 职场文书
护理专科毕业自荐信范文
2014/04/21 职场文书
大学本科生职业生涯规划书范文
2014/09/14 职场文书
领导班子遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
住房公积金贷款工资证明
2015/06/12 职场文书
2016年暑期见闻作文
2015/11/25 职场文书
外出学习心得体会范文
2016/01/18 职场文书
让人瞬间清醒的句子,句句经典,字字如金
2019/07/08 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书
详解Oracle块修改跟踪功能
2021/11/07 Oracle
深入浅出的讲解:信号调制到底是如何实现的
2022/02/18 无线电