iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0

QDateEdit 是 PyQt5 裡的日期調整元件,這篇教學會介紹如何在 PyQt5 視窗裡加入 QDateEdit 日期調整元件,並實做透過該元件調整日期並將調整的日期顯示出來的簡單應用。

原文參考:QDateEdit 日期調整元件

因為 Google Colab 不支援 PyQt5,所以請使用本機環境 ( 參考:使用 Python 虛擬環境 ) 或使用 Anaconda Jupyter 進行實作 ( 參考:使用 Anaconda )。

Python 教學 - QDateEdit 日期調整元件

加入 QDateEdit 日期調整元件

建立 PyQt5 視窗物件後,透過 QtWidgets.QDateEdit(widget) 方法,就能在指定的元件中建立日期調整元件,調整時,需要先點擊要調整的日期位置,就可以針對該位置的日期進行調整。

from PyQt5 import QtWidgets
import sys
app = QtWidgets.QApplication(sys.argv)

Form = QtWidgets.QWidget()
Form.setWindowTitle('oxxo.studio')
Form.resize(300, 200)

date = QtWidgets.QDateEdit(Form)
date.setGeometry(20,20,100,30)

Form.show()
sys.exit(app.exec_())

Python 教學 - QDateEdit 日期調整元件

日期格式設定

使用 setDisplayFormat() 方法可以調整日期的顯示格式,預設「西元年/月/日」顯示方式的格式為「yyyy/MM/dd」( 注意大小寫不能有錯 ),若調整為「dd/MM/yyyy」就會變成「日/月/西元年」,下方的程式碼會列出兩組不同格式的日期調整元件。

from PyQt5 import QtWidgets
import sys
app = QtWidgets.QApplication(sys.argv)

Form = QtWidgets.QWidget()
Form.setWindowTitle('oxxo.studio')
Form.resize(300, 200)

d1 = QtWidgets.QDateEdit(Form)
d1.setGeometry(20,20,100,30)
d1.setDisplayFormat('dd/MM/yyyy')

d2 = QtWidgets.QDateEdit(Form)
d2.setGeometry(130,20,100,30)
d2.setDisplayFormat('yyyy/MM/dd')

Form.show()
sys.exit(app.exec_())

Python 教學 - QDateEdit 日期調整元件

如果要設定日期調整的範圍,需要搭配 QtCore.QDate(y, m, d) 方法,下方的程式碼執行後,會將日期調整的範圍限制在 2000/1/1~2000/2/1。

from PyQt5 import QtWidgets, QtCore
import sys
app = QtWidgets.QApplication(sys.argv)

Form = QtWidgets.QWidget()
Form.setWindowTitle('oxxo.studio')
Form.resize(300, 200)

d1 = QtWidgets.QDateEdit(Form)
d1.setGeometry(20,20,100,30)
d1.setDisplayFormat('dd/MM/yyyy')
d1.setDateRange(QtCore.QDate(2000, 1, 1), QtCore.QDate(2000, 2, 1))  # 設定日期範圍

Form.show()
sys.exit(app.exec_())

日期調整元件常用方法

下方列出 QDateEdit 日期調整元件的常用方法:

方法 參數 說明
setDate() QDate 設定預設日期。
setDisplayFormat() format 日期調整的格式。
setDateRange() start, end 日期調整的範圍。
setMaximumDate() QDate 日期調整範圍的最大日期。
setMinimumDate() QDate 日期調整範圍的最小日期。
dateChanged.connect() fn 日期調整時要執行的函式。
editingFinished.connect() fn 使用鍵盤上下鍵調整後,按下 enter 要執行的函式。
date() 取得目前調整的日期。
date().toString() 取得目前調整的日期轉換成字串。
QtCore.QDate().currentDate() 取得目前電腦日期。
QtCore.QDate() y, m, d 設定日期。

顯示日期調整元件的內容

運用 dateChanged.connect(fn) 方法,就能在調整時間時,執行特定的函式,下方的程式碼執行後,會透過 QLabel 顯示調整的時間。

from PyQt5 import QtWidgets, QtCore
import sys
app = QtWidgets.QApplication(sys.argv)

Form = QtWidgets.QWidget()
Form.setWindowTitle('oxxo.studio')
Form.resize(300, 200)

label = QtWidgets.QLabel(Form)
label.setGeometry(20,20,120,30)

def show():
    label.setText(d1.date().toString())

d1 = QtWidgets.QDateEdit(Form)
d1.setGeometry(150,20,100,30)
d1.setDisplayFormat('dd/MM/yyyy')
d1.setDate(QtCore.QDate().currentDate())
d1.dateChanged.connect(show)

Form.show()
sys.exit(app.exec_())

Python 教學 - QDateEdit 日期調整元件

更多 Python 教學

大家好,我是 OXXO,是個即將邁入中年的斜槓青年,我已經寫了超過 400 篇 Python 的教學,有興趣可以參考下方連結呦~ ^_^


上一篇
( Day 14 ) QTimeEdit 時間調整元件
下一篇
( Day 16 ) QSlider 數值調整滑桿
系列文
實戰 Python x PyQt5 軟體介面設計35
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言