0
是否有可能每15分鐘更新一次PyQT4中的Qwidget?我知道它們就像Qtimer一樣,但是也可以在特定時間自行更新QWidget,例如00h00 00h15 00h30 00h45 01h00,...。那麼他們是如何使Qtimer依賴於時間的?每隔幾分鐘更新一次QWidget
是否有可能每15分鐘更新一次PyQT4中的Qwidget?我知道它們就像Qtimer一樣,但是也可以在特定時間自行更新QWidget,例如00h00 00h15 00h30 00h45 01h00,...。那麼他們是如何使Qtimer依賴於時間的?每隔幾分鐘更新一次QWidget
QTimer類有一個setInterval
方法。你可以利用它來改變飛行中的等待時間。作爲一個簡短的例子,這段代碼將顯示當前秒。但是,如果第二個是10的倍數,將等待5秒鐘再開始之前:(從tutorial這是稍微修改瞭如何構建一個數字時鐘)
import sys
from PyQt4 import QtGui, QtCore
from time import strftime
class Main(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.initUI()
def initUI(self):
self.timer = QtCore.QTimer(self)
self.timer.timeout.connect(self.Time)
self.timer.start(1000)
self.lcd = QtGui.QLCDNumber(self)
self.lcd.display(strftime("%S"))
self.setCentralWidget(self.lcd)
self.setGeometry(300,300,250,100)
def Time(self):
if int(strftime("%S")) % 10 == 0:
self.timer.setInterval(5000)
else:
self.timer.setInterval(1000)
self.lcd.display(strftime("%S"))
def main():
app = QtGui.QApplication(sys.argv)
main = Main()
main.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
它看起來像這樣對於顯示的4點連續的變化:
爲您的特定問題,當您啓動應用程序,你可以找到它有多長,直到下一刻鐘通過功能像呈現在這個answer:
def next_quarter_hour(self):
dt = datetime.datetime.now()
nsecs = dt.minute*60+dt.second+dt.microsecond*1e-6
delta = (nsecs//900)*900+900-nsecs
return delta * 1000.0
這將改變如下:
def initUI(self):
...
self.timer.start(next_qt_hour)
...
def Time(self):
if int(strftime("%M")) % 15 == 0:
self.timer.setInterval(900000)
self.lcd.display(strftime("%M"))
使用此設置你的第一個區間。然後,一旦該計時器耗盡,請將間隔重置爲15分鐘。
謝謝,這很清楚! – Driedan