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()
是不是很簡單
訂閱:
張貼留言 (Atom)
ChartGPT 學 python 很強喔
ChartGPT 最近很紅 , 前一陣子有一些小 module 本來想 google 一下 語法 但發現用 chartGPT 直接請他給 sample code 反而較快 所以只要你有基本 知識 ChartGPT 可以加速你的開發 好用喔
-
按鈕(Buttons) 是 GUI 中很常用到的元件 按鈕的建置跟上一篇提到很相識, 但多了一個連動的概念以 PyQT 來說就是Signals and Slot (訊號與槽) 葉就是說當我按了一個 Button ( 發射一個訊號) 要執行哪個動作 (到哪個槽) ...
-
讀取 IP Cameras 的方法非常簡單 可以直接使用 Open CV package import cv2 # ip camera 的擷取路徑 URL = "rtsp://admin:admin@192.168.1.1/1" # 建立 V...
-
上一篇有介紹到 Qcalendar, 但並沒有使用 Class 來定義主視窗 , 這篇就來介紹如何使用 Class 定義主視窗, 其實 code 跟function 差不多 基本概念很間單, 我們先定義一個主視窗的 class . 這個class 繼承QWidget, 或...
沒有留言:
張貼留言