PyQt5日历控件及相关操作

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


posted @ 2020-02-11 09:34  The-Chosen-One  阅读(2430)  评论(0编辑  收藏  举报