PYQT5(14)-基本窗口控件-日历与时间

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()设置日历控件是否显示网格

代码示例

import sys
from PyQt5 import QtCore
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import QDate


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('Calendar 例子')

    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

QDateTimeEdit是一个允许用户编辑日期时间的控件,可以使用键盘和上、下箭头按钮来增加或减少日期时间值。比如,当使用鼠标选中QDateTimeEdit中的年份时,可以使用键盘上的上、下键来改变数值。

常用方法

setDisplayFormat()设置日期时间格式:
yyyy,代表年份,用4位数表示
MM,代表月份,取值范围为01~12
dd,代表日,取值范围为01~31
HH,代表小时,取值范围为00~23
mm,代表分钟,取值范围为00-59
ss,代表秒,取值范围为00-59
setMinimumDate()设置控件的最小日期
setMaximumDate()设置控件的最大日期
time()返回编辑的时间
date()返回编辑的日期

常用信号

dateChanged当日期改变时发射此信号
dateTimeChanged当日期时间改变时发射此信号
timeChanged当时间改变时发射此信号

设置显示格式时要注意:QDateEdit用来编辑控件的日期,仅包括年、月和日;QTimeEdit用来编辑控件的时间,仅包括小时、分钟和秒。

代码示例

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()
        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_())

 代码示例

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()
        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, 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('dateTime=%s' % str(dateTime))
        print('maxDate=%s' % str(maxDate))
        print('maxDateTime=%s' % str(maxDateTime))
        print('maxTime=%s' % str(maxTime))
        print('minDate=%s' % str(minDate))
        print('minDateTime=%s' % str(minDateTime))
        print('minTime=%s' % str(minTime))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = DateTimeEditDemo()
    demo.show()
    sys.exit(app.exec_())

 

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AdolphW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值