PyQt5—基本窗口控件之日历与时间

日历与时间

  • 基本窗口控件
    • 十三、日历与时间
      • 1、QCalendar
      • 2、QDateTimeEdit
        • 2.1、QDateTimeEdit 的子类
        • 2.2、初始化 QDateTimeEdit 子类
        • 2.3、QDateTimeEdit 使用示例:

基本窗口控件

十三、日历与时间

1、QCalendar

  • QCalendar 是日历控件,提供基于月份的视图,允许通过鼠标或键盘选择日期,默认为当天日期。
  • QCalendar 类中的常用方法如下表:
    方法 描述
    setDateRange() 设置日期范围供选择
    setFirstDayOfWeek() 重新设置星期的第一天,默认为星期日。
    setMinimumDate() 设置最大日期
    setMaximumDate() 设置最小日期
    setSelectedDate() 设置一个 QDate 对象,作为日期控件所选定的日期
    maximumDate() 获取日历控件的最大日期
    minimumDate() 获取日历控件的最小日期
    selectedDate() 返回当前所选定的日期
    setGridvisible() 设置日历控件是否显示网格
  • setFirstDayOfWeek() 的可选参数如下:
    意义
    Qt.Monday 星期一
    Qt.Tuesday 星期二
    Qt.Wendnesday 星期三
    Qt.Thursday 星期四
    Qt.Friday 星期五
    Qt.Saturday 星期六
    Qt.Sunday 星期日
  • QCalendar 使用示例:
    # -*- coding:utf-8 -*-
    # Time : 2019/08/18 下午 2:43 
    # Author : 御承扬
    # e-mail:[email protected]
    # project:  PyQt5
    # File : qt32_CalendarTest.py 
    # @software: PyCharm
    
    
    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.cal = QCalendarWidget(self)
            self.label = QLabel(self)
            self.initUI()
    
        def initUI(self):
            self.setGeometry(100, 100, 400, 350)
            self.setWindowTitle("Calendar 例子")
            self.setWindowIcon(QIcon("./images/Python2.ico"))
            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)
            date = self.cal.selectedDate()
            self.label.setText(date.toString("yyyy-MM-dd dddd"))
            self.label.move(20, 300)
    
        def showDate(self, date):
            self.label.setText(date.toString("yyyy-MM-dd dddd"))
    
    
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        win = CalendarExample()
        win.show()
        sys.exit(app.exec_())
    
  • 运行效果:
    PyQt5—基本窗口控件之日历与时间_第1张图片

2、QDateTimeEdit

  • QDateTimeEdit ,一个允许用户编辑日期和时间的控件。
  • QDateTimeEdit 通过 setDisplayFormat() 函数设置显示的日期和时间格式。
  • QDateTimeEdit 类常用方法如下:
    | 方法 | 描述 |
    | setDisplayFormat() | 设置日期格式:yyyy 表示年份,MM 表示月份(01-12),dd 表示日期(01-31)HH 表示小时(24小时制)mm 表示分钟,ss 表示秒 |
    | setMinimumDate() | 设置控件的最小日期 |
    | setMaximumDate() | 设置控件的最大日期 |
    | time() | 返回编辑的时间 |
    | date() | 返回编辑的日期 |
  • QDateTimeEdit 类中常用信号如下:
    信号 含义
    dateChanged 日期改变时触发该信号
    dateTimeChanged 日期和时间改变时触发该信号
    timeChanged 时间改变时触发该信号

2.1、QDateTimeEdit 的子类

  • QDateEdit 和 QTimeEdit 类皆是 QDateTimeEdit 的子类,继承了 QDateTimeEdit 的特性和功能。
  • QDateEdit 用来编辑控件的日期(年月日),QTimeEdit 用来编辑控件的时间(时分秒)
  • 只有 QDateTimeEdit 和 QDateEdit 类能有效设置弹出日历。

2.2、初始化 QDateTimeEdit 子类

  • QDateTimeEdit 类构造时不指定日期时间,則默认设置和本地相同的日期时间格式,值为 2000 年 1 月 1 日 0 时 0 分 0 秒。
  • 如果不想使用系统默认格式,则可以通过 setDisplayFormat() 定义日期时间格式。
  • 使用 setCalendarPopup(True) 可以弹出日历来选择日期

2.3、QDateTimeEdit 使用示例:

  • 示例代码如下:
    # -*- coding:utf-8 -*-
    # Time : 2019/08/18 下午 3:32 
    # Author : 御承扬
    # e-mail:[email protected]
    # project:  PyQt5
    # File : qt33_DateTimeEditTest.py 
    # @software: PyCharm
    
    
    import sys
    from PyQt5.QtCore import *
    from PyQt5.QtGui import *
    from PyQt5.QtWidgets import *
    
    
    class DateTimeEditDemo(QWidget):
        def __init__(self):
            super(DateTimeEditDemo, self).__init__()
            self.dateEdit = QDateTimeEdit(QDateTime.currentDateTime(), self)
            self.btn = QPushButton("获得日期和时间")
    
            self.initUI()
    
        def initUI(self):
            self.setWindowTitle("QDateTimeEdit 例子")
            self.setWindowIcon(QIcon("./images/Python2.ico"))
            self.resize(300, 90)
    
            layout = QVBoxLayout()
            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.clicked.connect(self.onButtonClick)
    
            layout.addWidget(self.dateEdit)
            layout.addWidget(self.btn)
            self.setLayout(layout)
    
        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' % 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_())
    
  • 运行如下:
    PyQt5—基本窗口控件之日历与时间_第2张图片
  • 控制台输出:
    PyQt5.QtCore.QDateTime(2019, 8, 19, 15, 53, 59, 722)
    PyQt5.QtCore.QDate(2019, 8, 19)
    
    选择日期时间
    dateTime=PyQt5.QtCore.QDateTime(2019, 8, 19, 15, 53, 59, 722)
    maxDate=PyQt5.QtCore.QDate(2020, 8, 17)
    maxDateTime=PyQt5.QtCore.QDateTime(2020, 8, 17, 23, 59, 59, 999)
    maxTime=PyQt5.QtCore.QTime(23, 59, 59, 999)
    minDate=PyQt5.QtCore.QDate(2018, 8, 18)
    minDateTime=PyQt5.QtCore.QDateTime(2018, 8, 18, 0, 0)
    minTime=PyQt5.QtCore.QTime(0, 0)
    

你可能感兴趣的:(PyQt5)