gpt4 book ai didi

python - 每分钟更新一次 QWidget

转载 作者:行者123 更新时间:2023-11-30 23:12:28 24 4
gpt4 key购买 nike

他们是否有可能每 15 分钟更新一次 PyQT4 中的 Qwidget?我知道它们类似于 Qtimer,但是否也可以使 QWidget 在特定时间更新自身,例如 00h00 00h15 00h30 00h45 01h00,...。那么他们是让 Qtimer 依赖于时间的方法吗?

最佳答案

QTimer类有一个 setInterval方法。您可以利用它来动态更改等待时间。作为一个简短的示例,此代码块将显示当前秒数。但是,如果第二个是 10 的倍数,它将等待 5 秒然后再次开始:

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()

(这是对显示如何构建数字时钟的 tutorial 稍作修改的)

连续 4 次显示变化如下所示:

Seconds

<小时/>

对于您的特定问题,当您启动应用程序时,您可以通过 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 分钟。

关于python - 每分钟更新一次 QWidget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29807201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com