我使用pyqt库在python中制作了一个秒表(计时器),但是按复位按钮然后按开始按钮时我遇到了问题,我看到时间增加了2,重复该过程,我发现三分之二和很快。我不明白为什么会这样。我希望有人能帮助我。这是代码:
# -*- 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__
方法,这样连接就只能建立一次。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句