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 に答える