Python Qt GUI设计:QCalendar日历类和QDateTimeEdit时间类(基础篇—20)
目錄
1、QCalendar日歷類
2、QDateTimeEdit時(shí)間類
1、QCalendar日歷類
QCalendar是一個(gè)日歷控件,它提供了一個(gè)基于月份的視圖,允許用戶通過鼠標(biāo)或鍵盤選擇日期,默認(rèn)選中的是今天的日期。也可以對(duì)日歷的日期范圍進(jìn)行規(guī)定。
QCalendar類中的常用方法如下表所示:
通個(gè)示例了解QCalendar日歷類,示例效果如下所示:?
示例中有日歷控件和標(biāo)簽控件,當(dāng)前選定的日期顯示在標(biāo)簽控件中。創(chuàng)建QCalendarWidget組件,并設(shè)置該日歷控件的最大日期和最小日期。從窗口組件中選定一個(gè)日期,會(huì)發(fā)射一個(gè)QCore.QDate信號(hào),將此信號(hào)連接到用戶定義的showDate()槽函數(shù)。通過調(diào)用selectedDate()方法檢索所選定的日期,然后將日期對(duì)象轉(zhuǎn)換為指定格式字符串并將其設(shè)置為標(biāo)簽控件內(nèi)容。
實(shí)現(xiàn)代碼如下所示:
import sys
from PyQt5 import QtCore
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import QDateclass 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_())
2、QDateTimeEdit時(shí)間類
QDateTimeEdit是一個(gè)允許用戶編輯日期時(shí)間的控件,可以使用鍵盤和上、下箭頭按鈕來增加或減少日期時(shí)間值。
QDateTimeEdit類中的常用方法如下表所示:
QDateTimeEdit類中的常用信號(hào)如下表所示:
QDateTimeEdit類中包含QDateEdit類和QTimeEdit類,QDateEdit類用來編輯控件的日期,僅包括年、月和日;QTimeEdit用來編輯控件的時(shí)間,僅包括小時(shí)、分鐘和秒。
不要用QDateEdit類來設(shè)置或獲取時(shí)間,也不要用QTimeEdit類來設(shè)置或獲取日期。如果要同時(shí)操作日期時(shí)間,請(qǐng)使用QDateTimeEdit類。
設(shè)置彈出日歷時(shí)要注意:用來彈出日歷的類只有QDateTimeEdit類和QDateEdit類,而QTimeEdit類雖然在語法上可以設(shè)置彈出日歷,但不起作用。
在默認(rèn)情況下,如果QDateTimeEdit類構(gòu)造時(shí)不指定日期時(shí)間,那么系統(tǒng)會(huì)為其設(shè)置一個(gè)和本地相同的日期時(shí)間格式,并且值為2000年1月1日0時(shí)0分0秒,也可以手動(dòng)指定控件顯示的日期時(shí)間。
通過示例了解QDateTimeEdit時(shí)間類,示例效果如下所示:?
在這個(gè)例子中有QDateTimeEdit控件和按鈕控件,當(dāng)單擊“獲得日期和時(shí)間"按鈕時(shí),會(huì)獲得當(dāng)前的日期和時(shí)間。
實(shí)現(xiàn)代碼如下所示:
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")# 設(shè)置最小日期self.dateEdit.setMinimumDate(QDate.currentDate().addDays(-365)) # 設(shè)置最大日期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('獲得日期和時(shí)間') self.btn.clicked.connect(self.onButtonClick) vlayout.addWidget( self.dateEdit )vlayout.addWidget( self.btn )self.setLayout(vlayout) # 日期發(fā)生改變時(shí)執(zhí)行 def onDateChanged(self , date):print(date)# 無論日期還是時(shí)間發(fā)生改變,都會(huì)執(zhí)行def onDateTimeChanged(self , dateTime ):print(dateTime)# 時(shí)間發(fā)生改變時(shí)執(zhí)行def onTimeChanged(self , time):print(time) def onButtonClick(self ): dateTime = self.dateEdit.dateTime()# 最大日期maxDate = self.dateEdit.maximumDate() # 最大日期時(shí)間maxDateTime = self.dateEdit.maximumDateTime() # 最大時(shí)間maxTime = self.dateEdit.maximumTime() # 最小日期minDate = self.dateEdit.minimumDate() # 最小日期時(shí)間minDateTime = self.dateEdit.minimumDateTime() # 最小時(shí)間 minTime = self.dateEdit.minimumTime() print('\n選擇日期時(shí)間' ) 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_())
總結(jié)
以上是生活随笔為你收集整理的Python Qt GUI设计:QCalendar日历类和QDateTimeEdit时间类(基础篇—20)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python Qt GUI设计:QCli
- 下一篇: Python Qt GUI设计:QPri