PyQt5-QCalendar和QDateTimeEdit使用(日历和时间)
一、QCalendar是一个日历控件,提供了基于月份的师徒,允许用户通过鼠标或者键盘来选择日期,默认为当前日期;
常用方法:
例如:
1 #QCalendar日历控件使用 2 from PyQt5.QtWidgets import QCalendarWidget, QFileDialog,QTextEdit,QFontDialog, QLineEdit,QStyle,QFormLayout, QInputDialog,QVBoxLayout,QWidget,QApplication ,QHBoxLayout,QDialog,QPushButton,QMainWindow,QGridLayout,QLabel 3 from PyQt5.QtCore import QDir 4 from PyQt5.QtGui import QIcon,QPixmap,QFont 5 from PyQt5.QtCore import QDate 6 7 import sys 8 9 class WindowClass(QWidget): 10 11 def __init__(self,parent=None): 12 13 super(WindowClass, self).__init__(parent) 14 self.btn=QPushButton(self)#self参数则让该按钮显示当前窗体中 15 self.btn.setText("选择日期") 16 self.btn.move(0,0) 17 self.btn.clicked.connect(self.openCalendar) 18 self.le=QLabel(self) 19 self.cal=QCalendarWidget(self) 20 self.cal.setMinimumDate(QDate(2017,1,1))#设置日期最小范围 21 self.cal.setMaximumDate(QDate(2019,12,30))#设置日期最大范围 22 self.cal.setGridVisible(True)#是否显示日期之间的网格 23 self.cal.move(5,30) 24 self.cal.hide()#隐藏日期控件 25 self.cal.clicked[QDate].connect(self.showDate)#clicked[参数],即定义showDate是传入的参数类型设置 26 date=self.cal.selectedDate()#获取选中日期,默认当前系统时间 27 self.le.setText(date.toString('yyyy-MM-dd dddd')) 28 self.le.move(100,8) 29 self.setGeometry(100,100,400,350)#设置当前窗体位置和大小 30 self.setWindowTitle("日历控件使用") 31 32 def showDate(self,date): 33 self.le.setText(date.toString("yyyy-MM-dd dddd")) 34 self.cal.close()#关闭日期控件 35 def openCalendar(self): 36 self.cal.show()#显示日期控件 37 38 if __name__=="__main__": 39 app=QApplication(sys.argv) 40 win=WindowClass() 41 win.show() 42 sys.exit(app.exec_())
二、QDateTimeEdit控件:
QDateEdit和QTimeEdit类均继承自QDateTimeEdit类,他们的方法都是QDateTimeEdit类提供;
QDateEdit和QTimeEdit类继承结构如下
QWidget->QAbstractSpinBox->QDateTimeEdit->QDateEdit->QTimeEditi
注意:QDateEdit用于获取年月日,QTimeEdit用于编辑时分秒; 两者不要使用前者操作时间,后者操作日期;
日历弹出只有QDateTimeEdit和QDateEdit起作用,QTimeEdit不起作用;
设置弹出日历使用:dateTimeEdit.setCalendarPopup(True)
1 #QDateEdit和QTimeEdit控件使用 2 from PyQt5.QtWidgets import QDateEdit,QDateTimeEdit,QTimeEdit, QCalendarWidget, QFileDialog,QTextEdit,QFontDialog, QLineEdit,QStyle,QFormLayout, QInputDialog,QVBoxLayout,QWidget,QApplication ,QHBoxLayout,QDialog,QPushButton,QMainWindow,QGridLayout,QLabel 3 from PyQt5.QtCore import QDir 4 from PyQt5.QtGui import QIcon,QPixmap,QFont 5 from PyQt5.QtCore import QDate 6 7 import sys 8 9 class WindowClass(QWidget): 10 11 def __init__(self,parent=None): 12 13 super(WindowClass, self).__init__(parent) 14 self.btn=QPushButton(self)#self参数则让该按钮显示当前窗体中 15 self.btn.setText("点击获取日期信息") 16 self.btn.clicked.connect(self.showdate) 17 18 self.dateEdit=QDateEdit(self) 19 self.timeEdit=QTimeEdit(self) 20 self.dateTimeEdit=QDateTimeEdit(self) 21 self.dateEdit.setCalendarPopup(True) 22 #self.timeEdit.setCalendarPopup(True)#弹出界面是失效的注意; 23 #self.dateTimeEdit.setCalendarPopup(True)#时间是无法选择的 24 self.dateEdit.move(10,200) 25 self.timeEdit.move(10,100) 26 self.dateTimeEdit.move(10,300) 27 self.dateEdit.setDisplayFormat("yyyy-MM-dd") 28 self.timeEdit.setDisplayFormat("HH:mm:ss") 29 self.dateTimeEdit.setDisplayFormat("yyyy-MM-dd HH:mm:ss") 30 self.setWindowTitle("QDateEdit和QDateTimeEdit控件使用") 31 32 def showdate(self): 33 print(self.dateEdit.text()) 34 35 if __name__=="__main__": 36 app=QApplication(sys.argv) 37 win=WindowClass() 38 win.show() 39 sys.exit(app.exec_())
也可以手动设置时间和日期:
dateEdit=QDateTimeEdit(QDate.currentDate(),self)
timeEdit=QDateTimeEdit(QTime.currentTime(),self)
dateTimeEdit=QDateTimeEdit(QDateTime.currentDateTime(),self)
以上组件的常用信号和槽函数如下:
信号:dateChanged、dateTimeChanged、timeChanged
槽函数:默认为槽函数参数为QDate QDateTime QTime类型:
例如:修改上面程序如下
引用书中的讲解内容如下: