Calendar 物件用法跟前面的 button 差不多, 但多了一些日期的處理
下面這個例子會先用 function 來做處理, 使用上沒有問題, 但這不是很好的作法, 因為當使用者發出改變選擇的日期的訊號時, 會需要把 calendar 這個物件一起當參數傳給槽函數
這對未來要修改 code 時會很不容易 且如果很function 一直被呼叫, calendar 會被一直帶入 這是很好資源的, 所以往後的程式會漸漸地以 class 為主, 讓大家漸漸習慣 class 的使用.
#import package 其中 Qt 是用來做日期的轉換的
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QCalendarWidget
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtCore import Qt
from functools import partial
def window():
app = QApplication(sys.argv)
win = QWidget()
calendar = QCalendarWidget(win)
calendar.setGeometry(50,50,300,300)
calendar.selectionChanged.connect(partial(showdate,calendar))
# 當發出日期選擇時發出訊號到 showdate 槽並帶入 calendar 物件做參數
win.setWindowTitle("PyQt Grid Example")
win.setGeometry(50,50,400,400)
win.show()
sys.exit(app.exec_())
def showdate(calendar):
selectDay = calendar.selectedDate() #確認被選的日期
# selectDay 是 PyQT 日期格式, 但如果我們是要用這日期給 SQL 處理時須轉換
print("pyQT day",selectDay) #
#加入toString(Qt.ISODate) 就會變成string格式, 之後可以給 datetime package 處理
print("normal day", selectDay.toString(Qt.ISODate))
if __name__ == '__main__':
window()

是不是很簡單
沒有留言:
張貼留言