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

4

1 回答 1

1

我认为您不能暂停paintEvent 并同时更新屏幕。

要执行您想要的操作,一种可能的方法是创建一个方法,该方法调用paintEvent 传递要绘制的矩形数量,然后暂停。

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

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

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

于 2012-02-20T22:31:43.647 回答