get paid

Get paid for the tasks you do online

2019年1月29日 星期二

PyQT5 教學 - QCalenderWidget

PyQT 為何很多人用了開發 UI , 一個原因是因為 它包含了很多實用的 Widget , Calendar 就是其中一個 , 這省了很多開發時間, 不然自己寫一個日曆 是會瘋掉的

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()


是不是很簡單

沒有留言:

張貼留言

ChartGPT 學 python 很強喔

 ChartGPT 最近很紅 ,  前一陣子有一些小 module  本來想 google  一下 語法 但發現用 chartGPT 直接請他給 sample code 反而較快 所以只要你有基本 知識 ChartGPT 可以加速你的開發 好用喔