日历控件puls版本
- 前言
- 一、日历控件中不同风格的日期和时间
-
- [1.1 代码](#1.1 代码)
- [1.2 注意事项](#1.2 注意事项)
- [1.3 运行结果](#1.3 运行结果)
- 二、高级操作
-
- [2.1 成倍调整](#2.1 成倍调整)
- [2.2 下拉出日历](#2.2 下拉出日历)
- [2.3 事件函数](#2.3 事件函数)
- [2.4 获取设置的日期和时间](#2.4 获取设置的日期和时间)
- 完整代码
前言
1、不同风格的日期和时间展示
2、高级操作
一、日历控件中不同风格的日期和时间
QDateTimeEdit - 展示时间的框条,类似于文本输入框
1.1 代码
bash
'''
#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前进一整年
bash
dateTimeEdit1.setMinimumDate(QDate.currentDate().addDays(-365)) # 往前翻一整年
dateTimeEdit1.setMaximumDate(QDate.currentDate().addDays(365)) # 往后翻一整年
2.2 下拉出日历
dateTimeEdit2.setCalendarPopup(True)
2.3 事件函数
事件有3:日期变化、时间变化、日期时间变化。
博文末尾补上完整代码
其改变引发打印结果的改变(槽函数)
2.4 获取设置的日期和时间
注意函数写一半,突然想设置全局变量时的方法。
结合完整代码食用,效果更佳。
bash
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())
完整代码
bash
'''
#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_())