Python Qt GUI設計:QCalendar日歷類和QDateTimeEdit時間類(基礎篇—20)
目錄

1、QCalendar日歷類
2、QDateTimeEdit時間類
1、QCalendar日歷類
QCalendar是一個日歷控件,它提供了一個基于月份的視圖,允許用戶通過鼠標或鍵盤選擇日期,默認選中的是今天的日期。也可以對日歷的日期范圍進行規定。
Qt Company中日歷組件效果
QCalendar類中的常用方法如下表所示:
通個示例了解QCalendar日歷類,示例效果如下所示:
示例中有日歷控件和標簽控件,當前選定的日期顯示在標簽控件中。創建QCalendarWidget組件,并設置該日歷控件的最大日期和最小日期。從窗口組件中選定一個日期,會發射一個QCore.QDate信號,將此信號連接到用戶定義的showDate()槽函數。通過調用selectedDate()方法檢索所選定的日期,然后將日期對象轉換為指定格式字符串并將其設置為標簽控件內容。
實現代碼如下所示:
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_())
2、QDateTimeEdit時間類
QDateTimeEdit是一個允許用戶編輯日期時間的控件,可以使用鍵盤和上、下箭頭按鈕來增加或減少日期時間值。
Qt Company中時間組件效果
QDateTimeEdit類中的常用方法如下表所示:
QDateTimeEdit類中的常用信號如下表所示:
QDateTimeEdit類中包含QDateEdit類和QTimeEdit類,QDateEdit類用來編輯控件的日期,僅包括年、月和日;QTimeEdit用來編輯控件的時間,僅包括小時、分鐘和秒。
不要用QDateEdit類來設置或獲取時間,也不要用QTimeEdit類來設置或獲取日期。如果要同時操作日期時間,請使用QDateTimeEdit類。
設置彈出日歷時要注意:用來彈出日歷的類只有QDateTimeEdit類和QDateEdit類,而QTimeEdit類雖然在語法上可以設置彈出日歷,但不起作用。
在默認情況下,如果QDateTimeEdit類構造時不指定日期時間,那么系統會為其設置一個和本地相同的日期時間格式,并且值為2000年1月1日0時0分0秒,也可以手動指定控件顯示的日期時間。
通過示例了解QDateTimeEdit時間類,示例效果如下所示:
在這個例子中有QDateTimeEdit控件和按鈕控件,當單擊“獲得日期和時間"按鈕時,會獲得當前的日期和時間。
實現代碼如下所示:
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_())
GUI Python Qt
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。