在PyQt中使用whileloop时,time.sleep()会使程序崩溃

2024-10-03 21:28:44 发布

您现在位置:Python中文网/ 问答频道 /正文

在终端中使用time.sleep()函数时,没有问题。 当我使用PyQt并希望使用标签时,它会崩溃和/或只显示最后一个数字

顺便说一句:我想要一个功能,可以计算从2020年到2030年的不同速度的年份,用户可以更改,年份应该显示在标签上

非常感谢你的帮助

# timer that counts in the future with various speed // still crashing
def timer(self):
    x=datetime.datetime.now()
    z=x.ctime()
    self.ui.labelDateTime.setText(z)
    var=x.year
    while True:
        if var==2030:
            break
        else:
            var+=1
            y=x.replace(year=var)
            z=y.ctime()
            self.ui.labelDateTime.setText(z)
            time.sleep(0.5)
    print("You are dead")

Tags: 函数self终端uidatetimetimevarsleep
1条回答
网友
1楼 · 发布于 2024-10-03 21:28:44

您应该在for循环中调用QtCore.QCoreApplication.processEvents(),使Qt的事件循环继续传入事件(从键盘、鼠标或睡眠)

尽管调用QtCore.QCoreApplication.processEvents()是可行的,但我在网上的许多地方都看到,这应该是最后的选择。不幸的是,没有一个来源清楚地解释了原因,但请参见示例

因此,这似乎是允许的,但总的来说,使用QTimerQThread似乎是更好的设计

相关问题 更多 >