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