我有一个问题,可能很简单,但我没有得到解决。 我想在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())
    
2 个评论
Show your whole code.
如果你一直使用QtCore.QTime(00,00,00).addSecs(),那么你就无法获得更大的价值。你必须只创建一次QtCore.QTime(00,00,00)并在time()中增加它。
python
pyqt
pyqt4
pyqt5
And3r50n 1
And3r50n 1
发布于 2016-12-26
4 个回答
eyllanesc
eyllanesc
发布于 2020-03-09
已采纳
0 人赞同

{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(1000)
sys.exit(app.exec_())

Output:

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
    
furas
furas
发布于 2020-03-09
0 人赞同

我不能测试它,但我认为你需要

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

ekhumoro
ekhumoro
发布于 2020-03-09
0 人赞同

你只需要把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')
    
Felipe
Felipe
发布于 2020-03-09
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)