PyQt4绘图和睡眠

时间:2012-02-20 09:21:26

标签: python pyqt4 qpainter

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的一部分,这里的问题是绘画不是逐个矩形地发生,而是等待整个睡眠完成即睡眠(.4)* len(trgx)然后打印所有的矩形在一起。我如何纠正这个?

1 个答案:

答案 0 :(得分:1)

我认为您无法暂停paintEvent并同时更新屏幕。

要做你想做的事,可能的方法是创建一个方法,调用paintEvent传递要绘制的矩形数,然后暂停。

可能更好的方法是使用QTimer和这样的代码(伪代码):

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

update()插槽计算要绘制的矩形数并绘制它们。绘制完所有矩形后,只需调用timer.stop()方法停止计时器。