如何正确使用QtTimer?
我有一个按钮连接到一个基本上做一些数学的方法,但是我想迭代它并一次看一个结果,它们之间有1秒的延迟。
在正常的脚本中,我会使用
for i in xrange(10):
domath(i)
sleep(1)
但是在GUI中它不起作用,因为它冻结了GUI,我看不到结果。仅在10秒后,我才看到最后一次迭代。
我尝试了QtTimer,但似乎没有用。
for i in xrange(10):
QtCore.QTimer.singleShot(1000,lambd: domath(i))
它直接进入最后一次迭代。我错过了什么吗?
答案 0 :(得分:3)
我个人会这样写:
class A(QObject):
def __init__(self):
self.counter = 0
Timer.singleShot(100, self.domath())
Slot()
def domath(self):
# do the computation
self.counter += 1
if self.counter != 10:
Timer.singleShot(100, self.domath())
else:
self.counter = 0;
免责声明:即使它看起来像PyQt代码,这只是 伪代码。我从未测试过,但这个概念在我看来是有效的。