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類型:

例如:修改上面程序如下

引用書中的講解內容如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM