如何在PyQt中创建计时器

5

我有一个问题可能很简单,但我一直无法解决。

我想在pyqt中使用QTimeEdit创建一个计时器,初始时间为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())

1
展示你的全部代码。 - Taufiq Rahman
如果你一直使用 QtCore.QTime(00,00,00).addSecs(),那么你将无法获得更大的值。你需要只创建一个 QtCore.QTime(00,00,00) 并在 time() 中增加它。 - furas
4个回答

7

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

。在这里,addSecs()是一个函数,它接受一个整数作为参数,表示要添加的秒数。
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(1000)

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

3

我无法测试,但我认为您需要

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) 并增加这个值。


2

您只需要获取 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')

0

这里有一个解决方案:

import sys

from PySide import QtCore

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

app = QtCore.QCoreApplication(sys.argv)

timer0 = QtCore.QTimer()
time = QtCore.QTime(0, 0, 0)
timer0.setInterval(1000)
timer0.timeout.connect(calculo)
timer0.start()

sys.exit(app.exec_())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接