2012-02-20 6 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, Проблема здесь состоит в том, что картина не происходит прямоугольник прямоугольника, но вместо этого он ждет всего сна, чтобы закончить то есть сон (.4) * len (trgx), а затем печатает все прямоугольники вместе. Как это исправить?PyQt4 Drawing и сон

ответ

1

Я думаю, что вы не можете приостановить paintEvent и обновить экран одновременно.

Чтобы сделать то, что вы хотите, можно создать способ, который вызывает paintEvent, передавая количество прямоугольников для рисования и затем приостанавливать.

Вероятно, лучший способ заключается в использовании QTimer с кодом, как это (псевдокод):

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

слот update() вычислить количество прямоугольника рисовать и рисовать их. Когда все прямоугольники нарисованы, просто вызовите метод timer.stop(), чтобы остановить таймер.