如何在pyq中创建计时器

2024-06-10 06:07:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个问题可能很简单,但我没能解决 我想使用QTimeEdit在pyqt中创建一个计时器,默认时间从00:00:00开始,并且每秒钟递增一次。我试过下面的代码,但是只添加了一秒钟就停止了。

self.timer = QtCore.QTimer()
self.timer.timeout.connect(self.time)
self.timer.start(1000)

def time(self):
    self.upTime.setTime(QtCore.QTime(00,00,00).addSecs())

Tags: 代码selftimedefconnect时间timeoutstart
3条回答

您只需在QTimeEdit中获取当前时间并将其增加一秒:

def time(self):
    self.upTime.setTime(self.upTime.time().addSecs(1))

并确保在启动时间开始时正确初始化QTimeEdit

self.upTime.setTime(QtCore.QTime(0, 0, 0))
self.upTime.setDisplayFormat('hh:mm:ss')

我不能测试但我想你需要

self.curr_time = QtCore.QTime(00,00,00)

self.timer = QtCore.QTimer()
self.timer.timeout.connect(self.time)
self.timer.start(1000)

def time(self):
    self.curr_time = self.curr_time.addSecs()
    self.upTime.setTime(self.curr_time))

您只需创建QtCore.QTime(00,00,00)一次,然后在time()中增加它的值。

现在您总是使用QtCore.QTime(00,00,00)并增加这个值。

{yout time}.addSecs(1)不更改时间,但返回更改的时间。必须使用{yout time} = {yout time}.addSecs(1)

import sys

from PyQt5 import QtCore


def timerEvent():
    global time
    time = time.addSecs(1)
    print(time.toString("hh:mm:ss"))


app = QtCore.QCoreApplication(sys.argv)

timer = QtCore.QTimer()
time = QtCore.QTime(0, 0, 0)

timer.timeout.connect(timerEvent)
timer.start(100)

sys.exit(app.exec_())

输出:

00:00:01
00:00:02
00:00:03
00:00:04
00:00:05
00:00:06
00:00:07
00:00:08
00:00:09
00:00:10
00:00:11
00:00:12

相关问题 更多 >