【PyQt】17.1-日历控件 不同风格的日期和时间、以及高级操作

日历控件puls版本

  • 前言
  • 一、日历控件中不同风格的日期和时间
    • 1.1 代码
    • 1.2 注意事项
      • 格式设置m的大小写问题
      • QTime和QDateTime的区别
    • 1.3 运行结果
  • 二、高级操作
    • 2.1 成倍调整
    • 2.2 下拉出日历
    • 2.3 事件函数
    • 2.4 获取设置的日期和时间
  • 完整代码

前言

1、不同风格的日期和时间展示
2、高级操作

一、日历控件中不同风格的日期和时间

QDateTimeEdit - 展示时间的框条,类似于文本输入框

1.1 代码

'''
#Author :susocool
#Creattime:2024/3/19
#FileName:40-日历控件
#Description: 日历控件的展示'''
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *class DateTimeEdit( QWidget ):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle('设置不同风格的日期和时间')self.resize(400,100)dateTimeEdit1 = QDateTimeEdit()dateTimeEdit2 = QDateTimeEdit(QDateTime.currentDateTime())  # 获取当前时间dateEdit = QDateTimeEdit(QDate.currentDate())   # 获取当前日期timeEdit = QDateTimeEdit(QTime.currentTime())# 显示样式dateEdit.setDisplayFormat("yyyy.MM.dd") # 这里需要注意m的大小写timeEdit.setDisplayFormat("HH:mm:ss")dateTimeEdit1.setDisplayFormat("yyyy-MM-dd HH:mm:ss")dateTimeEdit2.setDisplayFormat("yyyy/MM/dd HH-mm-ss")# 布局样式vlayout = QVBoxLayout()vlayout.addWidget(dateTimeEdit1)vlayout.addWidget(dateTimeEdit2)vlayout.addWidget(dateEdit)vlayout.addWidget(timeEdit)self.setLayout(vlayout)	# 总是忘记把布局添加上去if __name__ == '__main__':app = QApplication(sys.argv)ui = DateTimeEdit()ui.show()sys.exit(app.exec_())

1.2 注意事项

格式设置m的大小写问题

在大多数编程语言和库中,日期时间格式模式是区分大小写的。
通常,大写的 “Y” 表示年份,小写的 “y” 表示一个年份的数字;
大写的 “M” 表示月份,小写的 “m” 表示分钟;
大写的 “D” 表示月中的天数,小写的 “d” 表示一年中的某一天。
类似地,“H” 表示24小时制的小时数,“h” 表示12小时制的小时数,“S” 表示毫秒,“s” 表示秒。

在这里插入图片描述
切换成小写的字母就会产生错乱,因为小写的m表示分钟!!!
在这里插入图片描述

QTime和QDateTime的区别

1、QTime:QTime 类代表时间,它只包含小时、分钟、秒和毫秒信息,精确到毫秒级别。适合表示一天中的某个特定时间点,没有日期信息。

2、QDateTime:QDateTime 类代表日期和时间,它包含日期、小时、分钟、秒和毫秒信息,精确到毫秒级别。适合表示日期和时间,可以同时表示日期和时间的组合。

1.3 运行结果

在这里插入图片描述

按住Tab按键可以进行切换。然后修改,当然你也可以手动切换。
可以看出,前面一个是随机的产生一段日期时间,后面是获取当前时间并且按照我们设定的样式进行展示。

二、高级操作

2.1 成倍调整

当前日期后退or前进一整年

dateTimeEdit1.setMinimumDate(QDate.currentDate().addDays(-365))     # 往前翻一整年
dateTimeEdit1.setMaximumDate(QDate.currentDate().addDays(365))      # 往后翻一整年

在这里插入图片描述
在这里插入图片描述

2.2 下拉出日历

dateTimeEdit2.setCalendarPopup(True)

在这里插入图片描述

2.3 事件函数

事件有3:日期变化、时间变化、日期时间变化。
博文末尾补上完整代码
在这里插入图片描述
其改变引发打印结果的改变(槽函数)

2.4 获取设置的日期和时间

注意函数写一半,突然想设置全局变量时的方法。
结合完整代码食用,效果更佳。

    def onButtonClick(self):datetime = self.dateTimeEdit.dateTime()print(datetime)# 获取最大最小日期和时间print(self.dateTimeEdit.maximumDateTime())print(self.dateTimeEdit.minimumDateTime())# 获取最大最小日期print(self.dateTimeEdit.maximumDate())print(self.dateTimeEdit.minimumDate())

在这里插入图片描述

完整代码

'''
#Author :susocool
#Creattime:2024/3/19
#FileName:40-日历控件
#Description: 日历控件的展示'''
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *class DateTimeEdit( QWidget ):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle('设置不同风格的日期和时间')self.resize(400,100)dateTimeEdit1 = QDateTimeEdit()dateTimeEdit2 = QDateTimeEdit(QDateTime.currentDateTime())  # 获取当前时间dateEdit = QDateTimeEdit(QDate.currentDate())   # 获取当前日期timeEdit = QDateTimeEdit(QTime.currentTime())self.button = QPushButton('获取日期和时间')self.dateTimeEdit = dateTimeEdit1   # 设置全局变量# 显示样式dateEdit.setDisplayFormat("yyyy.MM.dd") # 这里需要注意m的大小写timeEdit.setDisplayFormat("HH:mm:ss")dateTimeEdit1.setDisplayFormat("yyyy-MM-dd HH:mm:ss")dateTimeEdit2.setDisplayFormat("yyyy/MM/dd HH-mm-ss")# 成倍调整dateTimeEdit1.setMinimumDate(QDate.currentDate().addDays(-365))     # 往前翻一整年dateTimeEdit1.setMaximumDate(QDate.currentDate().addDays(365))      # 往后翻一整年# 下拉出日历选择dateTimeEdit2.setCalendarPopup(True)# 布局样式vlayout = QVBoxLayout()vlayout.addWidget(dateTimeEdit1)vlayout.addWidget(dateTimeEdit2)vlayout.addWidget(dateEdit)vlayout.addWidget(timeEdit)vlayout.addWidget(self.button)  # 注意添加时与其他的区别self.setLayout(vlayout)# 槽函数dateTimeEdit1.dateChanged.connect(self.onDateChanged)dateTimeEdit1.timeChanged.connect(self.onDateTimeChanged)dateTimeEdit1.dateTimeChanged.connect(self.onDateTimeChanged)self.button.clicked.connect(self.onButtonClick)def onDateChanged(self,date):print(date)def onTimeChanged(self,time):print(time)def onDateTimeChanged(self,DateTime):print(DateTime)def onButtonClick(self):datetime = self.dateTimeEdit.dateTime()print(datetime)# 获取最大最小日期和时间print(self.dateTimeEdit.maximumDateTime())print(self.dateTimeEdit.minimumDateTime())# 获取最大最小日期print(self.dateTimeEdit.maximumDate())print(self.dateTimeEdit.minimumDate())if __name__ == '__main__':app = QApplication(sys.argv)ui = DateTimeEdit()ui.show()sys.exit(app.exec_())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/766540.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uni-app里面如何使用图标

目录 一、导入 1.在官方(iconfont-阿里巴巴矢量图标库)选择自己想要的图标,加入购物车 2. 在点击购物车下载代码 3.解压文件夹 并更改名字 4.将文件夹(iconfont)整个放到项目中的static中 5.修改iconfont.css文件…

上位机开发 halcon坐标转轴坐标

背景 上位机开发中有一种相机叫标定相机,主要是有来给某些要进行根据CAD图点位计算时当前产品实际点位坐标时使用的一种标定测量相机。主要原理是根据两个或多个指定的标定点进行取图计算圆心坐标,再将视觉计算出的圆心坐标和取图时的轴坐标进行偏差计算。最后得到标定点轴的…

2024年3月24日暴富榜

子丑寅卯辰巳午未申酉戌亥 每天一读,《小飞生肖》运势, 让您的生活更美好! 鼠:生肖暴富榜《中暴富》 鼠:红榜衣服颜色(蓝色) 牛:生肖暴富榜《中暴富》 牛:红榜衣服颜色…

超越工具的限制!菜鸟工具箱帮你节省时间

在这个飞速发展的时代,我们越来越依赖各种工具来提高工作效率和解决问题。然而,你是否意识到,有些工具不仅仅是工具,它们还能为你带来更多的可能性和机遇?菜鸟工具箱就是这样一个超越工具本身的存在! 菜鸟工…

目标检测的指标评估

目标检测模型的评价指标主要用于衡量模型的性能,特别是它在定位和识别目标方面的准确性。以下是一些常见的评价指标: 1. 精确度 (Precision): 表示检测到的目标中,正确检测到的目标所占的比例。精确度高意味着模型产生的误报(错误…

腾讯云GPU服务器介绍_GPU实例规格价格_AI_深度学习

腾讯云GPU服务器是提供GPU算力的弹性计算服务,腾讯云GPU服务器具有超强的并行计算能力,可用于深度学习训练、科学计算、图形图像处理、视频编解码等场景,腾讯云百科txybk.com整理腾讯云GPU服务器租用价格表、GPU实例优势、GPU解决方案、GPU软…

洛谷 Cut Ribbon

思路:我们可以看出,这是一道完全背包问题,但是呢,有一点需要注意:那就是我们在装背包的时候并不能保证一定能装满背包,但是这里的背包要求是让我们装满的,所以我们需要判断这个背包装满才行&…

Linux之文件系统与软硬链接

前言 我们之前阐述的内容都是在文件打开的前提下, 但是事实上不是所有文件都是被打开的, 且大部分文件都不是被打开的(也就是文件当前并不需要被访问), 都在磁盘中进行保存. 那这些没有被(进程)打开的文件, 也是需要被管理的! 对于这部分文件核心工作之一是能够快速定位文件…

【java数据结构】基于java提供的ArrayList实现的扑克牌游戏-(附源码~)

【Java数据结构】基于java泛型实现的二维数组完成三人扑克游戏 基本框架的实现创建一副牌如何进行洗牌:每个人抓的牌放到哪里: 源码具体实现cardcardsTest 个人简介:努力学编程 每日鸡汤:stay foolish,stay hungry-史蒂芬.乔布斯斯…

pytorch图像数据集定义

文章目录 相关链接DatasetVisionDatasetDatsetFolderImageFolder torchvision.transformsPytorch LightningLightningDataModule 对于图像数据集来说,首先是在Dataset类对数据集进行定义,一般来说不定义transform,则数据为PIL Image&#xff…

Sora入门级概念、Open-Sora 1.0和现状挑战(附多个文生视频 Prompt 案例)

OpenAI Sora入门级概念 Sora模型是OpenAI 发布的人工智能模型,它主要用于生成和处理视频内容。以下是Sora模型的一些入门级概念: 视频内容生成:Sora模型能够根据文本描述生成视频内容。这意味着你可以输入一段描述性的文本,模型将基于这段文本生成相应的视频画面。场景和角…

Github 2024-03-19 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-03-19统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目9TypeScript项目2HTML项目1GDScript项目1MetaGPT: 多代理框架 创建周期:260 天开发语言:Python协议类型:MIT LicenseStar数量:35…

MongoDb数据库介绍安装使用

#安装mongodb# 第一步 下载mongoDb: 官网https://www.mongodb.com/ 第二步 进行安装配置修改Data directory 和 Log Directory 将数据目录和日志目录存放在D盘 第三步 取消install MongoDb Compass这个是安装可视化工具的意思在这里不需要 #配置环境变量加入到系统中的path环…

鸿蒙Harmony应用开发—ArkTS-LazyForEach:数据懒加载

LazyForEach从提供的数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。当在滚动容器中使用了LazyForEach,框架会根据滚动容器可视区域按需创建组件,当组件滑出可视区域外时,框架会进行组件销毁回收以降低内存占用。 接口…

EI级!高创新原创未发表!VMD-TCN-BiGRU-MATT变分模态分解卷积神经网络双向门控循环单元融合多头注意力机制多变量时间序列预测(Matlab)

EI级!高创新原创未发表!VMD-TCN-BiGRU-MATT变分模态分解卷积神经网络双向门控循环单元融合多头注意力机制多变量时间序列预测(Matlab) 目录 EI级!高创新原创未发表!VMD-TCN-BiGRU-MATT变分模态分解卷积神经…

Spring设计模式-实战篇之模板方法模式

什么是模板方法模式? 模板方法模式用于定义一个算法的框架,并允许子类在不改变该算法结构的情况下重新定义算法中的某些步骤。这种模式提供了一种将算法的通用部分封装在一个模板方法中,而将具体步骤的实现延迟到子类中的方式。 模板方法模式…

【Go】Go语言中的数组与切片

纵使微茫如烟 纵有万般思念 流光总将故人搁浅在断简残篇 不成眠 不等谁来证明 不必狂歌痛饮 唯盼重相见 我如倦鸟归林 🎵 流浪的蛙蛙《从别后》 摘要 Go语言提供了强大的数据结构来处理固定长度的序列和动态长度的序列,分别称为数…

Superset二次开发之 配置Docker

手动安装 安装必要的一些系统工具 在设置仓库之前,需先安裝所需的软件包。yum-utils提供了yum-config-manager,并且device mapper存储驱动程序需要device-mapper-persistent-data和lvm2。 yum install -y yum-utils device-mapper-persistent-data lvm2 设置源仓库 使用阿里云…

爬虫工作量由小到大的思维转变---<第五十一章 Scrapy 深入理解Scrapy爬虫引擎(2)--引擎的工作流程>

前言: 继续上一篇:https://hsnd-91.blog.csdn.net/article/details/136943552 本章主要介绍Scrapy引擎的启动流程、请求处理的生命周期、如何处理下载的内容以及触发Item Pipeline的过程。还讨论了数据处理在爬虫解析函数和Item Pipeline中的作用,并介绍了引擎关闭…

2024年 前端JavaScript Web APIs 第五天 笔记

5.1-BOM和延迟函数setTimeout 5.2-事件循环eventloop 1-》 3 -》2 1-》 3 -》2 5.3-location对象 案例&#xff1a;5秒钟之后自动跳转页面 <body><a href"http://www.itcast.cn">支付成功<span>5</span>秒钟之后跳转到首页</a><sc…