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() | 设置日历控件是否显示网格 |
代码示例
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.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('Calendar 例子')
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
QDateTimeEdit是一个允许用户编辑日期时间的控件,可以使用键盘和上、下箭头按钮来增加或减少日期时间值。比如,当使用鼠标选中QDateTimeEdit中的年份时,可以使用键盘上的上、下键来改变数值。
常用方法
setDisplayFormat() | 设置日期时间格式: yyyy,代表年份,用4位数表示 MM,代表月份,取值范围为01~12 dd,代表日,取值范围为01~31 HH,代表小时,取值范围为00~23 mm,代表分钟,取值范围为00-59 ss,代表秒,取值范围为00-59 |
setMinimumDate() | 设置控件的最小日期 |
setMaximumDate() | 设置控件的最大日期 |
time() | 返回编辑的时间 |
date() | 返回编辑的日期 |
常用信号
dateChanged | 当日期改变时发射此信号 |
dateTimeChanged | 当日期时间改变时发射此信号 |
timeChanged | 当时间改变时发射此信号 |
设置显示格式时要注意:QDateEdit用来编辑控件的日期,仅包括年、月和日;QTimeEdit用来编辑控件的时间,仅包括小时、分钟和秒。
代码示例
import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import QDate, QDateTime, QTime
class DateTimeEditDemo(QWidget):
def __init__(self):
super(DateTimeEditDemo, self).__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('QDateTimeEdit例子')
self.resize(300, 90)
vlayout = QVBoxLayout()
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")
vlayout.addWidget(dateTimeEdit)
vlayout.addWidget(dateTimeEdit2)
vlayout.addWidget(dateEdit)
vlayout.addWidget(timeEdit)
self.setLayout(vlayout)
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = DateTimeEditDemo()
demo.show()
sys.exit(app.exec_())
代码示例
import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import QDate, QDateTime, QTime
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, 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' % str(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_())