gpt4 book ai didi

python - 秒表(计时器)不起作用

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

我使用pyqt库在python中制作了一个秒表(chronometre),但是当我按下重置按钮然后按下开始按钮时遇到问题,我看到时间增加了两倍,然后重复我看到增加的过程三人一组等等。 我不明白为什么会发生这种情况。我希望有人能帮助我。 这是代码:

# -*- coding: utf-8 -*-

import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4 import uic


class Cronometro(QWidget):

def __init__(self):
QWidget.__init__(self)
uic.loadUi("cronometro.ui", self)

self.sec = 0
self.timer = QTimer()

self.set_time()

# Conexion
self.btnStart.clicked.connect(self.start)
self.btnReset.clicked.connect(self.reset)
self.btnExit.clicked.connect(self.close)

def start(self):
self.timer.timeout.connect(self.counter)
self.timer.start(1000)

def reset(self):
self.timer.stop()
self.sec = 0

def counter(self):
self.sec += 1
self.set_time()

def is_timer_active(self):
return self.timer.isActive()

def set_time(self):
hora = self.sec / 3600
minutos = (self.sec % 3600) / 60
segundos = (self.sec % 3600) % 60
self.label.setText("%02d:%02d:%02d" % (hora, minutos, segundos))


app = QApplication(sys.argv)
ventana = Cronometro()
ventana.show()
sys.exit(app.exec_())

非常感谢!

最佳答案

问题就在这里,在您的 start 方法中:

    def start(self):
self.timer.timeout.connect(self.counter)
self.timer.start(1000)

每次启动计时器时,都会将计时器的 timeout 信号连接到您的 counter 方法。因此,如果您启动计时器两次,则从计时器到您的 counter 方法有两个连接,因此在计时器的每个滴答声中,计数器方法都会被调用两次。

解决方法相当简单:移动线路

        self.timer.timeout.connect(self.counter)

进入您的__init__方法,以便仅建立一次连接。

关于python - 秒表(计时器)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34560088/

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