gpt4 book ai didi

python - 似乎无法让 pyqt 倒计时器工作

转载 作者:行者123 更新时间:2023-12-01 05:55:47 25 4
gpt4 key购买 nike

我已经在互联网上搜索了好几天,但可以弄清楚如何让这段代码发挥作用。这是一个非常简单的图形用户界面(在 Qt Designer 上制作),带有液晶显示屏和按钮。我希望按下按钮即可从 180 秒开始倒计时。在第一刻,我能够使按钮减少一个值,但在尝试了很多不同的事情之后,没有任何效果。有人能帮助我吗?可能是非常简单的事情。谢谢。

# -*- coding: utf-8 -*-
import sys
import time
from PyQt4 import QtCore, QtGui
from relogio import Ui_relogiocc

class StartQT4(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_relogiocc()
self.ui.setupUi(self)
self.timer = QtCore.QTimer()
text = "%d:%02d" % (180/60,180 % 60)
self.ui.QLCDNumber.display(text)
self.timer.start(1000)
self.ui.iniciar.clicked.connect(self.updateTimerDisplay)


def updateTimerDisplay(self):
self.inicio = 180
while self.inicio != 0:
text = "%d:%02d" % (self.inicio/60,self.inicio % 60)
self.ui.QLCDNumber.display(text)
self.inicio - 1
else:
self.timer.stop()


if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
myapp = StartQT4()
myapp.show()
sys.exit(app.exec_())

最佳答案

您似乎缺少很多东西。

首先,每当每个超时周期结束时,计时器都会发出 timeout() 信号。就您而言,这是每一秒。但是,您没有将此信号连接到任何东西。

其次,您的 updateTimerDisplay 包含以下行:

   self.inicio - 1

这会读取 self.inicio 的值,从中减去 1,然后丢弃结果。因为 self.inicio 的值不会改变您的 updateTimerDisplay 方法,因此会进入无限循环。

我猜你的意思是

   self.inicio -= 1

相反,它将 self.inicio 的新值分配回自身。

但是,最终您似乎正在尝试使用 updateTimerDisplay 方法来启动计时器、倒计时并更新计时器的显示。我建议将此方法分解为更小的方法。

首先,updateTimerDisplay 应该只更新计时器的显示:

 def updateTimerDisplay(self):
text = "%d:%02d" % (self.inicio/60,self.inicio % 60)
self.ui.QLCDNumber.display(text)

其次,您需要一个启动计时器的方法。应该执行类似以下操作:

 def startTimer(self):
self.inicio = 180
self.updateTimerDisplay()
self.timer.start(1000)

当然,您还需要将 iniciar 按钮的 clicked() 信号连接到此函数,而不是 updateTimerDisplay

最后,您需要一个处理计时器滴答声的方法。应该执行类似以下操作:

 def timerTick(self):
self.inicio -= 1
self.updateTimerDisplay()
if self.inicio <= 0:
self.timer.stop()

您还需要将计时器的 timeout() 信号连接到此函数,使用如下方法:

  self.timer.timeout.connect(self.timerTick)

关于python - 似乎无法让 pyqt 倒计时器工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12661211/

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