我使用pyqt库在python中制作了一个秒表(chronometre),但是当我按下重置按钮然后按下开始按钮时遇到问题,我看到时间增加了两倍,然后重复我看到增加的过程三人一组等等。 我不明白为什么会发生这种情况。我希望有人能帮助我。 这是代码:
# -*- coding: utf-8 -*-
nhập khẩu hệ thống
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4 import uic
class Cronometro(QWidget):
định nghĩa __init__(bản thân):
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_())
Cảm ơn bạn rất nhiều!
问题就在这里,在您的 start
方法中:
def start(self):
self.timer.timeout.connect(self.counter)
self.timer.start(1000)
每次启动计时器时,都会将计时器的 timeout
信号连接到您的 counter
方法。因此,如果您启动计时器两次,则从计时器到您的 counter
方法有两个连接,因此在计时器的每个滴答声中,计数器方法都会被调用两次。
解决方法相当简单:移动线路
self.timer.timeout.connect(self.counter)
进入您的__init__
方法,以便仅建立一次连接。
Tôi là một lập trình viên xuất sắc, rất giỏi!