组件"/>
Python:PyQt 时间组件
import sys
from PyQt5.QtWidgets import QApplication,QWidget,QCalendarWidget,QHBoxLayout,QVBoxLayout,QDateTimeEdit,QLabel,QMessageBox
from PyQt5.QtCore import Qt,QDateTime,QDate,QTime
# 日期表达式:
# d - 没有前置0的数字的天(1-31)
# dd - 前置0的数字的天(01-31)
# ddd - 缩写的日名称(Mon-Sun)。使用QDate.shortDayName()。
# dddd - 长的日名称(Monday-Sunday)。使用QDate.longDayName()。
# M - 没有前置0的数字的月(1-12)
# MM - 前置0的数字的月(01-12)
# MMM - 缩写的月名称(Jan-Dec)。使用QDate.shortMonthName()。
# MMMM - 长的月名称(January-December)。使用QDate.longMonthName()。
# yy - 两位数字的年(00-99)
# yyyy - 四位数字的年(0000-9999)# 时间表达式:
# h - 没有前置0的数字的小时(0-23或者如果显示AM/PM时,1-12)
# hh - 前置0的数字的小时(00-23或者如果显示AM/PM时,01-12)
# m - 没有前置0的数字的分钟(0-59)
# mm - 前置0的数字的分钟(00-59)
# s - 没有前置0的数字的秒(0-59)
# ss - 前置0的数字的秒(00-59)
# z - 没有前置0的数字的毫秒(0-999)
# zzz - 前置0的数字的毫秒(000-999)
# AP - 切换为AM/PM显示。AP将被“AM”或“PM”替换。
# ap - 切换为am/pm显示。ap将被“am”或“pm”替换。app = QApplication(sys.argv)
exe = QWidget()hbox = QHBoxLayout()cal = QCalendarWidget()# 时间组件
dt1 = QDateTimeEdit(QDateTime.currentDateTime()) # 创建日期+时间的组件
dt1.setDisplayFormat('yyyy-MM-dd hh:mm:ss zzz') # 显示样式
# dt1.setDateTime(QDateTime(2011,4,22,16,33,15))
# 弹出选择日期窗口
dt1.setCalendarPopup(True) # 允许弹出时间窗口dt2 = QDateTimeEdit(QDate.currentDate()) # 创建日期,并初始值
# dt2.setDate(QDate.currentDate())
dt2.setDate(QDate(2016,6,20)) # 更改时间
# 其他同功能的有用函数:
# setDateTimeRange()、setDateRange()、setTimeRange()、
# setMaximumDateTime()和setMinimumDateTime()、setMinimumTime()和setMaximumTime()
dt2.setMinimumDate(QDate.currentDate().addDays(-365)) # 限定时间最小值,当前时间-365天
dt2.setMaximumDate(QDate.currentDate().addDays(365)) # 限定时间最大值,当前时间+365天
dt2.setCalendarPopup(True) # 允许弹出窗口选择日期,setMinimumDate()的限定对这个窗口也有效dt3 = QDateTimeEdit(QTime.currentTime()) # 创建时间,并初始值
dt3.setDisplayFormat('hh:mm:ss zzz') # 显示样式
dt3.setTime(QTime(13,14,00,520)) # 必须有上面的样式,否则只显示前2位
# dt3.setSelectedSection(QDateTimeEdit.HourSection)# 常用的三个信号:dateChanged()、dateTimeChanged()、timeChanged(),当日期、日期时间、时间改变时发射。
def timeShow():QMessageBox.about(exe,"时间","选择的时间是:"+dt1.dateTime().toString())
dt1.dateTimeChanged.connect(timeShow)label1 = QLabel(dt1.dateTime().toString()) # 获取日期+时间
label2 = QLabel("maximumDateTime:"+dt2.maximumDateTime().toString()) #获取最大时间,也可以获取其他类似时间
# label3 = QLabel(dt3.time().toString())
# QDateTimeEdit::NoSection 0x0000
# QDateTimeEdit::AmPmSection 0x0001
# QDateTimeEdit::MSecSection 0x0002
# QDateTimeEdit::SecondSection 0x0004
# QDateTimeEdit::MinuteSection 0x0008
# QDateTimeEdit::HourSection 0x0010
# QDateTimeEdit::DaySection 0x0100
# QDateTimeEdit::MonthSection 0x0200
# QDateTimeEdit::YearSection 0x0400
# label3 = QLabel(str(dt2.sectionText(QDateTimeEdit.YearSection))) # 获取时的部分
# label3 = QLabel(dt2.sectionText(dt2.sectionAt(0))) # 获取第一部分与上面等效
label3 = QLabel(dt3.sectionText(dt3.sectionAt(0))) # 获取时部分# dt1.sectionCount() ,结果int型,日期时间类型包含几个部分(数量)vbox = QVBoxLayout()
vbox.addWidget(dt1)
vbox.addWidget(label1)
vbox.addWidget(dt2)
vbox.addWidget(label2)
vbox.addWidget(dt3)
vbox.addWidget(label3)hbox.addWidget(cal)
hbox.addLayout(vbox)exe.setLayout(hbox)
exe.show()
sys.exit(app.exec_())
原文
更多推荐
Python:PyQt 时间组件
发布评论