2012-02-20 79 views
0
for i in range(len(trgx)): 
    qp.begin(self) 
    brush = QtGui.QBrush(QtCore.Qt.red,QtCore.Qt.SolidPattern) 
    qp.setBrush(brush) 
    qp.drawRect(trgx[i],trgy[i],cd,rd) 
    qp.end() 
    time.sleep(.4) 

上述代碼是的paintEvent的一部分,這裏的問題是,繪畫,不會發生由矩形矩形,而是它等待整個睡眠完成即睡眠(0.4)* len(trgx),然後將所有矩形一起打印出來。如何糾正這個問題?PyQt4的繪圖和睡眠

回答

1

我認爲你不能暫停paintEvent並在同一時間更新屏幕。

要做你想做的事,可能的方法是創建一個方法,調用paintEvent傳遞矩形的數量來繪製然後暫停。

可能是一個更好的方法是使用一個QTimer具有這樣的代碼(僞代碼):

timer = QTimer() 
connect(timer, SIGNAL(timeout()), this, SLOT(update())) 
timer.start(1000) 

update()時隙計算矩形的數目來繪製和繪製它們。當繪製所有的矩形時,只需調用timer.stop()方法即可停止定時器。