2012-02-20 74 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()方法即可停止定时器。