PyQt定时器/休眠的正确使用
我该如何正确使用QtTimer?
我有一个按钮,点击后会连接到一个方法,这个方法基本上是做一些数学运算,但我想逐个查看结果,每个结果之间有1秒的延迟。
在普通的脚本中,我会使用
for i in xrange(10):
domath(i)
sleep(1)
但是在图形界面中这样做不行,因为它会让界面卡住,我根本看不到结果。只有等到10秒后,我才能看到最后一个结果。
我试过使用QtTimer,但好像不太管用。
for i in xrange(10):
QtCore.QTimer.singleShot(1000,lambd: domath(i))
它直接跳到最后一个结果。我是不是漏掉了什么?
1 个回答
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的代码,但这其实是伪代码。我从来没有测试过这些代码等等,但我认为这个概念是有效的。