iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0

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

原文參考:QTimeEdit 時間調整元件

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

Python 教學 - QTimeEdit 時間調整元件

加入 QTimeEdit 時間調整元件

建立 PyQt5 視窗物件後,透過 QtWidgets.QTimeEdit(widget) 方法,就能在指定的元件中建立時間調整元件

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

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

timeedit = QtWidgets.QTimeEdit(Form)
timeedit.setGeometry(20,20,100,30)

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

Python 教學 - QTimeEdit 時間調整元件

調整時,需要先點擊要調整的時間位置,就可以針對該位置的時間進行調整。

Python 教學 - QTimeEdit 時間調整元件

時間格式設定

使用 setDisplayFormat() 方法可以調整時間的顯示格式,預設「上午 時:分」顯示方式的格式為「ap hh:mm」,若調整為「hh:mm:ss」就會變成 24 小時制並且有秒數,如果調整為「hh:mm:ss ap」,則會變成 12 小時制,上午下午放在最後方,下方的程式碼會列出三組不同格式的時間調整元件。

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

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

now = QtCore.QTime.currentTime()

t1 = QtWidgets.QTimeEdit(Form)
t1.setGeometry(20,20,120,30)
t1.setDisplayFormat('hh:mm:ss')
t1.setTime(now)

t2 = QtWidgets.QTimeEdit(Form)
t2.setGeometry(20,60,120,30)
t2.setDisplayFormat('hh:mm ap')
t2.setTime(now)

t3 = QtWidgets.QTimeEdit(Form)
t3.setGeometry(20,100,120,30)
t3.setDisplayFormat('ap hh:mm:ss')
t3.setTime(now)

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

Python 教學 - QTimeEdit 時間調整元件

如果要設定時間調整的範圍,需要搭配 QtCore.QTime(h, m ,s) 方法,下方的程式碼執行後,會將時間調整的範圍限制在 10:00:00~20:00:00。

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

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


now = QtCore.QTime.currentTime()

t1 = QtWidgets.QTimeEdit(Form)
t1.setGeometry(20,20,120,30)
t1.setDisplayFormat('hh:mm:ss')
t1.setTimeRange(QtCore.QTime(10, 00, 00), QtCore.QTime(20, 00, 00))  # 設定時間範圍

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

時間調整元件常用方法

下方列出 QTimeEdit 時間調整元件的常用方法:

方法 參數 說明
setTime() QTime 設定預設時間。
setTimeRange() start, end 時間調整的範圍。
setDisplayFormat() format 時間調整的格式。
timeChanged.connect() fn 時間調整時要執行的函式。
editingFinished.connect() fn 使用鍵盤上下鍵調整後,按下 enter 要執行的函式。
time() 取得目前調整的時間。
time().toString() 取得目前調整的時間轉換成字串。
QtCore.QTime.currentTime() 取得目前電腦時間。
QtCore.QTime() h, m, s 設定時間。

顯示時間調整元件的內容

運用 timeChanged.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(t1.time().toString())  # 顯示時間

now = QtCore.QTime.currentTime()   # 取得目前電腦時間

t1 = QtWidgets.QTimeEdit(Form)
t1.setGeometry(140,20,120,30)
t1.setDisplayFormat('hh:mm:ss')
t1.setTime(now)                    # 設定時間
t1.setTimeRange(QtCore.QTime(3, 00, 00), QtCore.QTime(23, 30, 00))
t1.timeChanged.connect(show)

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

Python 教學 - QTimeEdit 時間調整元件

更多 Python 教學

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


上一篇
( Day 13 ) QSpinBox、QDoubleSpinBox 數值調整元件
下一篇
( Day 15 ) QDateEdit 日期調整元件
系列文
實戰 Python x PyQt5 軟體介面設計35
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言