PyQt5學習筆記---組件---日期、日曆、時間類

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_())
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章