2014-04-26 117 views
1

如何正確使用QtTimer?正確使用PyQt定時器/睡眠

我有一個按鈕連接到一個基本上做一些數學的方法,但我想遍歷它,並一次看到一個結果,並在它們之間延遲1秒。

在正常scriping我會用

​​

但在GUI這是行不通的,因爲它凍結的GUI,我無法看到的結果。只有10秒後,我纔看到最後一次迭代。

我試過QtTimer,但它似乎不工作。

for i in xrange(10): 
    QtCore.QTimer.singleShot(1000,lambd: domath(i)) 

它直接進入最後一次迭代。我錯過了什麼嗎?

回答

2

我會親自寫的是這樣的:

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的代碼,這是只有僞代碼。我從來沒有測試等,但這個概念在我看來是有效的。

+0

self.domath()應該是self.domath ...沒有括號。一旦我收到反饋意見,稍後會更新。計時器的值也應該是100而不是1000 ...這也會被更新。然而,這個概念仍然是一樣的。 – lpapp

+0

謝謝,完美的作品。 –