利用QTimer计时器,和一个QLCDNumber来制作一个简易秒表:要求按下按钮之后,秒表会从0开始计秒,最多只能显示两位数(最大99
时间: 2024-03-02 13:50:34 浏览: 118
QT C++ 实现在界面上换一个秒表表盘,每隔一秒,秒针往下走一秒,实现60秒走一圈的功能
好的,可以使用以下代码实现:
```python
from PyQt5.QtWidgets import QApplication, QWidget, QLCDNumber, QPushButton, QVBoxLayout
from PyQt5.QtCore import QTimer
class Stopwatch(QWidget):
def __init__(self):
super().__init__()
# 创建计时器和 LCD 数码管
self.timer = QTimer(self)
self.lcd = QLCDNumber(self)
self.lcd.setDigitCount(2)
self.lcd.display(0)
# 创建开始和重置按钮
self.start_button = QPushButton('Start', self)
self.reset_button = QPushButton('Reset', self)
# 设置布局
layout = QVBoxLayout()
layout.addWidget(self.lcd)
layout.addWidget(self.start_button)
layout.addWidget(self.reset_button)
self.setLayout(layout)
# 绑定按钮点击事件
self.start_button.clicked.connect(self.start_stopwatch)
self.reset_button.clicked.connect(self.reset_stopwatch)
# 初始化秒表计数器
self.count = 0
# 开始或暂停秒表
def start_stopwatch(self):
if self.timer.isActive():
self.timer.stop()
self.start_button.setText('Start')
else:
self.timer.timeout.connect(self.update_lcd)
self.timer.start(1000)
self.start_button.setText('Pause')
# 重置秒表
def reset_stopwatch(self):
self.count = 0
self.lcd.display(self.count)
self.timer.stop()
self.start_button.setText('Start')
# 更新 LCD 数码管的显示
def update_lcd(self):
self.count += 1
if self.count >= 100:
self.count = 0
self.lcd.display(self.count)
if __name__ == '__main__':
app = QApplication([])
stopwatch = Stopwatch()
stopwatch.show()
app.exec_()
```
在这个例子中,我们创建了一个名为 `Stopwatch` 的 QWidget 类来实现秒表功能。在构造函数中,我们创建了一个 QTimer 和一个 QLCDNumber,并且创建了两个 QPushButton 来开始和重置秒表。我们还设置了布局,并且绑定了按钮的点击事件。
在 `start_stopwatch` 方法中,我们检查计时器是否已经在运行。如果是,则停止计时器并将按钮的文本设置为“Start”。否则,我们启动计时器,并且在计时器的 timeout 信号上绑定 `update_lcd` 方法,每隔一秒钟更新一次 LCD 数码管的显示,并且将按钮的文本设置为“Pause”。
在 `reset_stopwatch` 方法中,我们将秒表计数器重置为0,并且停止计时器。然后,我们将 LCD 数码管的显示设置为0,并且将按钮的文本设置为“Start”。
最后,在 `update_lcd` 方法中,我们将秒表计数器加1,如果超过了99,则重置为0。然后,我们将 LCD 数码管的显示设置为计数器的值。
阅读全文