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)然后打印所有的矩形在一起。我如何纠正这个?
答案 0 :(得分:1)
我认为您无法暂停paintEvent并同时更新屏幕。
要做你想做的事,可能的方法是创建一个方法,调用paintEvent传递要绘制的矩形数,然后暂停。
可能更好的方法是使用QTimer和这样的代码(伪代码):
timer = QTimer()
connect(timer, SIGNAL(timeout()), this, SLOT(update()))
timer.start(1000)
update()
插槽计算要绘制的矩形数并绘制它们。绘制完所有矩形后,只需调用timer.stop()
方法停止计时器。