1、日歷控件QCalendarWidget控件
import sys,math
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class mycalendar(QWidget):
def __init__(self):
super(mycalendar,self).__init__()
self.initUI()
def initUI(self):
self.cal=QCalendarWidget(self)
self.cal.setMinimumDate(QDate(1988,1,1)) #設置日歷的最大最小日期
self.cal.setMaximumDate(QDate(2088,1,1))
self.cal.clicked.connect(self.showdate)
self.cal.setGridVisible(True) #設置日歷為網格形式
self.cal.move(20,20)
self.setWindowTitle("日歷演示")
self.label = QLabel(self)
date = self.cal.selectedDate()
#self.label.setText("顯示選擇日期")
self.label.setText(date.toString("yyyy-MM-dd dddd"))
self.label.move(20, 320)
self.resize(400,400)
def showdate(self,date):
self.label.setText(date.toString("yyyy-MM-dd dddd"))
if __name__=="__main__":
app=QApplication(sys.argv)
p=mycalendar()
p.show()
sys.exit(app.exec_())

2、不同顯示風格的日歷
import sys, math
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class DatetimeEdit(QWidget):
def __init__(self):
super(DatetimeEdit, self).__init__()
self.initUI()
def initUI(self):
vlayout=QVBoxLayout()
datetimeEdit1=QDateTimeEdit()
datetimeEdit2 = QDateTimeEdit(QDateTime.currentDateTime())
dateedit=QDateTimeEdit(QDate.currentDate())
timeedit=QDateTimeEdit(QTime.currentTime())
datetimeEdit1.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(datetimeEdit1)
vlayout.addWidget(datetimeEdit2)
vlayout.addWidget(dateedit)
vlayout.addWidget(timeedit)
self.setLayout(vlayout)
self.resize(300, 90)
self.setWindowTitle("設置不同風格的日期")
if __name__ == "__main__":
app = QApplication(sys.argv)
p = DatetimeEdit()
p.show()
sys.exit(app.exec_())

3、日歷控件QDateEdit控件,日歷的高級操作
import sys, math
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class DatetimeEdit(QWidget):
def __init__(self):
super(DatetimeEdit, self).__init__()
self.initUI()
def initUI(self):
vlayout=QVBoxLayout()
datetimeEdit1=QDateTimeEdit()
datetimeEdit2 = QDateTimeEdit(QDateTime.currentDateTime()) #獲取當前的日期和時間
datetimeEdit1.setMinimumDate(QDate.currentDate().addDays(-365))
datetimeEdit1.setMaximumDate(QDate.currentDate().addDays(365))
self.datetimeedit=datetimeEdit1
datetimeEdit2.setCalendarPopup(True) #將文本的日歷顯示格式轉換為下拉式表格顯示
dateedit=QDateTimeEdit(QDate.currentDate())
timeedit=QDateTimeEdit(QTime.currentTime())
datetimeEdit1.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")
datetimeEdit1.dateChanged.connect(self.ondatechanged)
datetimeEdit1.timeChanged.connect(self.ontimechanged)
datetimeEdit1.dateTimeChanged.connect(self.ondatetimechanged)
vlayout.addWidget(datetimeEdit1)
vlayout.addWidget(datetimeEdit2)
vlayout.addWidget(dateedit)
vlayout.addWidget(timeedit)
self.button=QPushButton("獲取日期和時間")
self.button.clicked.connect(self.onButtonClick)
vlayout.addWidget(self.button)
self.setLayout(vlayout)
self.resize(300, 90)
self.setWindowTitle("設置不同風格的日期")
#日期變化
def ondatechanged(self,date):
print(date)
#時間變化
def ontimechanged(self,time):
print(time)
#日期和時間變化
def ondatetimechanged(self,datetime):
print(datetime)
def onButtonClick(self):
datetime=self.datetimeedit.dateTime()
print(datetime)
#最大日期
print(self.datetimeedit.maximumDate())
#最大時間和日期
print(self.datetimeedit.maximumDateTime())
#最小日期
print(self.datetimeedit.minimumDate())
print(self.datetimeedit.minimumDateTime())
if __name__ == "__main__":
app = QApplication(sys.argv)
p = DatetimeEdit()
p.show()
sys.exit(app.exec_())
