我想創建一個簡單的計時器,它會顯示在螢屏上,并使用 QTime 來跟蹤經過的時間量。但是,當我使用 QTime(0, 0, 0) 創建時間時,它將始終保持初始值并且永遠不會改變。
from PyQt5.QtCore import QTime
time = QTime(0, 0, 0)
print(time.toString("hh:mm:ss")) # 00:00:00
time.addSecs(20)
print(time.toString("hh:mm:ss")) # Still 00:00:00 for some reason
為什么上面的代碼沒有更新時間變數,是否有一個簡單的解決方法?
uj5u.com熱心網友回復:
有一個超級簡單的解決方法。 time.addSecs(20)回傳一個值。time = time.addSecs(20)而是這樣做。這將解決您的問題。
uj5u.com熱心網友回復:
從檔案中,函式簽名是......
QTime QTime::addSecs(int s) const
所以你需要...
time = time.addSecs(20)
print(time.toString("hh:mm:ss"))
uj5u.com熱心網友回復:
函式名稱可能有點反直覺,但檔案對此非常清楚。
它并沒有說“給這個addSecs()物件增加s秒數”,而是說它
回傳一個 QTime 物件,該物件包含比該物件的時間晚的時間
s秒數”
(強調我的)
您的time物件不會使用addSecs().
更改 QTime 實體的唯一方法是使用setHMS().
如果您想要一個方便的函式來實際更改同一參考的時間值,您可以通過在代碼的最開始處創建一個新的“修補”方法來實作,就在第一次PyQt 匯入之后:
def adjustSecs(time, s):
new = time.addSecs(s)
time.setHMS(new.hour(), new.minute(), new.second(), new.msec())
QTime.adjustSecs = adjustSecs
# ...
t = QTime.currentTime()
print(t) # shows current time
t.adjustedSecs(3600)
print(t) # shows previous current time plus an hour
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/520143.html
上一篇:QML影像遮罩
