<p>正如其他答案所说,你的代码包含一些明显的错误。这里有一个完整的工作示例(UI不是通过Designer创建的),它可以在每次单击按钮时正确地重置计数器(即在再次启动计时器之前停止计时器)。如果您不这样做,并在计时器停止之前单击<code>Start</code>按钮,那么每次单击按钮计数器都会更快地计数)。在</p>
<pre><code>from PyQt4.QtGui import *
from PyQt4.QtCore import *
class MyMainWindow(QMainWindow):
def __init__(self, parent=None):
QMainWindow.__init__(self, parent)
self.central = QWidget(self)
self.hbox = QHBoxLayout(self.central)
self.lcd = QLCDNumber(self.central)
self.timer = QTimer(self)
self.start_time = 20
self.lcd.display("%d:%02d" % (self.start_time/60,self.start_time % 60))
self.start_button = QPushButton("Start", self.central)
self.hbox.addWidget(self.lcd)
self.hbox.addWidget(self.start_button)
self.setCentralWidget(self.central)
self.start_button.clicked.connect(self.restartTimer)
self.timer.timeout.connect(self.updateLCD)
def restartTimer(self):
# Reset the timer and the lcd
self.timer.stop()
self.start_time = 20
self.lcd.display("%d:%02d" % (self.start_time/60,self.start_time % 60))
# Restart the timer
self.timer.start(1000)
def updateLCD(self):
# Update the lcd
self.start_time -= 1
if self.start_time >= 0:
self.lcd.display("%d:%02d" % (self.start_time/60,self.start_time % 60))
else:
self.timer.stop()
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
ui = MyMainWindow()
ui.show()
sys.exit(app.exec_())
</code></pre>