PyQt5学习笔记---组件---日期、日历、时间类

15 篇文章 0 订阅

QCalendar:一个日历控件,提供了一个基于月份的视图,允许用户点击鼠标选择日期,默认选中时今天的日期。

常用方法

setDateRange()

设置日期范围供选择

setFirstDayOfWeek()

重新设置星期的第一天,默认时星期日

Qt.Monday Qt.Tuesday Qt.Wednesday Qt.Thursday Qt.Friday

Qt.Saturday Qt.Sunday

setMinimumDate()

设置最小日期

setMaximumDate()

设置最大日期

setSelectedDate()

设置一个QDate对象,作为日期控件所选定的日期

maximumDate()

获取日历控件的最大日期

minimumDate()

获取日历控件的最小日期

selectedDate()

返回当前选定的日期

setGridvisible()

设置日历控件是否显示网格

#QCalendar日历时间实例
# -*- coding: utf-8 -*-
import sys,math,os
from PyQt5 import QtCore
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

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

    def initUI(self):
        self.cal=QCalendarWidget(self)
        self.cal.setMinimumDate(QDate(1980,1,1))
        self.cal.setMaximumDate(QDate(3000,1,1))
        self.cal.setGridVisible(True)
        self.cal.move(20,20)
        #重点
        self.cal.clicked[QtCore.QDate].connect(self.showDate)

        self.lbl=QLabel(self)
        date=self.cal.selectedDate()
        self.lbl.setText(date.toString("yyyy-MM-dd dddd"))
        self.lbl.move(20,300)
        self.setGeometry(100,100,400,350)
        self.setWindowTitle("日历")

    def showDate(self,date):
        self.lbl.setText(date.toString("yyyy-MM-dd dddd"))

if __name__=="__main__":
    app=QApplication(sys.argv)
    demo=CalendarExample()
    demo.show()
    sys.exit(app.exec_())
  • QDateTimeEdit:是一个允许用户编辑日期时间的控件,可使用键盘上下箭头来增加或减少日期的时间值。

        两个子类 QDateEdit、QTimeEdit

  • QDateEdit用来编辑控件的日期,仅包括年、月、日。设置时需要注意 :

         dateEdit=QDateEdit(self)

         dateEdit.setDisplayFormat("yyyy-MM-dd")

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

        timeedit=QTimeEdit(self)

        timeedit.setDisplayFormat("HH:mm:ss")

常用方法

setDisplayFormat()

设置日期时间格式

yyyy:代表年份,四位数表示

MM:代表月份取值范围为01-12

dd:代表日,取值范围 01-31

HH:代表小时,取值范围00-23

mm:代表分钟取值范围 00-59

ss:代表秒 取值范围00-59

setMinimumDate()

设置控件最小日期

setMaximumDate()

设置控件最大日期

time()

返回编辑时间

date()

返回编辑日期

常用信号

dateChanged

日期改变时触发

dateTimeChanged

日期时间改变时触发

timeChanged

时间改变时触发

注:用来弹出日历的类只有QDateTimeEdit、QDateEdit

dateTimeEdit=QDateTimeEdit(self)
dateTimeEdit.setCalendarPopup(true)
dateEdit=QDateEdit(self)
dateEdit.setCalendarPopup(true)

若在初始化QDateTimeEdit时在构造函数中不指定时间,系统回味起设置一个很本地时间相同的日期时间格式且值为 2000年1月1日0时0分0秒,通过QDateTimeEdit提供的槽函数设置setDateTime()、setDate()、setTime()

dateTimeEdit=QDateTimeEdit(self)
dateTimeEdit2=QDateTimeEdit(QDateTime.currentDateTime(),self)

dateEdit=QDateTimeEdit(QDate.currentDate(),self)
timeEdit=QDateTimeEdit(QTime.currentTime(),self)

设置自定义的日期、时间格式

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")

设置日期时间范围

dateEdit=QDateTimeEdit(QDateTime.currentDateTime(),self)
dateEdit.setDisplayFormat("yyyy-MM-dd HH:mm:ss")

#设置最小日期
dateEdit.setMinimumDate(QDate.currentDate().addDays(-365))
#设置最大日期
dateEdit.setMaximumDate(QDate.currentDate().addDays(365))
  • 弹出日历
dateTimeEdit=QDateTimeEdit(QDateTime.currentDateTime(),self)
dateTimeEdit.setMinimumDate(QDate.currentDate().addDays(-365))
dateTimeEdit.setMaximumDate(QDate.currentDate().addDays(365))

dateTimeEdit.setCalendarPopup(True)
  • 获取日期时间

可以通过date()、dateTime()等方法获取日期时间对象。

获取年月日可调用QDate()的year()、month()、day()

dateTime=self.dateEdit.dateTime()

maxDate=self.dateEdit.maximumDate()
minDate=self.dateEdit.minimumDate()

maxTime=self.dateEdit.maxmumTime()
minTime=self.dateEdit.minimumDateTime()

minDateTime=self.dateEdit.minimumDateTime()

#各种输出
print("dateTime=%s" % str(dateTime))
print("maxDate=%s" % str(maxDate))
print("minDate=%s" % str(minDate))
print("maxTime=%s" % str(maxTime))
print("minTime=%s" % str(minTime))
print("minDateTime=%s" % str(minDateTime))

信号槽函数

dateEdit.dateChanged.connect(self.onDateChanged)
dateEdit.dateTimeChanged.connect(self.onDateTimeChanged)
dateEdit.timeChanged.connect(sel.onTimeChanged)

槽函数

#日期发生改变时
def onDateChanged(self,date):
    print(date)
#无论时日期还是时间发生改变都会执行
def onDateTimeChanged(self,dateTime):
    print(dateTime)
#时间发生改变执行
def onTimeChanged(self,time)        :
    print(time)
#QDateTimeEdit日历时间实例
# -*- coding: utf-8 -*-
import sys,math,os
from PyQt5 import QtCore
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

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

    def  initUI(self):
        self.setWindowTitle('QDateTimeEdit案例')
        self.resize(300,90)

        vlayout=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)

        vlayout.addWidget(self.dateEdit)
        vlayout.addWidget(self.btn)
        self.setLayout(vlayout)

    def onDateChanged(self,date):
        print(date)

    def onDateTimeChanged(self,dateTime):
        print(dateTime)

    def onTimeChanged(self,tiem):
        print(tiem)

    def onButtonClick(self):
        dateTime=self.dateEdit.dateTime()
        maxDate = self.dateEdit.maximumDate()
        minDate = self.dateEdit.minimumDate()

        maxTime = self.dateEdit.maximumTime()
        minTime = self.dateEdit.minimumTime()

        minDateTime = self.dateEdit.minimumDateTime()
        maxDateTime = self.dateEdit.maximumDateTime()
        # 各种输出
        print("\n 选择日期时间")
        print("dateTime=%s" % str(dateTime))
        print("maxDate=%s" % str(maxDate))
        print("minDate=%s" % str(minDate))
        print("maxTime=%s" % str(maxTime))
        print("minTime=%s" % str(minTime))
        print("maxDateTime=%s" % str(maxDateTime))
        print("minDateTime=%s" % str(minDateTime))

if __name__=="__main__":
    app=QApplication(sys.argv)
    demo=DateTimeEditDemo()
    demo.show()
    sys.exit(app.exec_())
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值