PyQt4 Рисование и сон - PullRequest
       22

PyQt4 Рисование и сон

0 голосов
/ 20 февраля 2012
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)и затем печатает все прямоугольники вместе. Как мне исправить это ??

1 Ответ

1 голос
/ 21 февраля 2012

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

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

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

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

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

...