2

私は PyQt で構築された GUI プログラムを持っています。GUI には QtGraphicsView ウィジェットがあり、これには GraphicsScene があり、表示および更新される Pixmap アイテムがあります。たとえば、次の行を使用してこれを行います。

view.scene().items().setPixmap(QPixmap.fromImage(qimage))   

毎回、qimage を変更し、この行を呼び出して画像表示を更新すると、うまくいきました。後で、画像を継続的に更新するループを追加したい:

for i in xrange(10):
    qimage = .... #make some changes to qimage
    view.scene().items().setPixmap(QPixmap.fromImage(qimage))  

まあ、画像はループ内で更新されません。ビューポートには最初の画像 (i=0) と最後の画像 (i = 9) のみが表示されます。GraphicsView ウィジェットの ViewportUpate オプションが原因だと思いましたが、使用しても機能しません: setViewportUpdateMode(QGraphicsView.FullViewportUpdate)...任意のアイデア? 助けてくれて本当にありがとう!

4

1 に答える 1

4

さて、私はループにもう1行追加QApplication.processEvents()しなければならない問題を見つけたと思います。そうしないと、ループが処理時間を占有し、プログラムに更新の機会を与えません

for i in xrange(10):
    qimage = .... #make some changes to qimage
    view.scene().items().setPixmap(QPixmap.fromImage(qimage))  
    QApplication.processEvents()

今では動作します。とにかく、みんなありがとう!

于 2012-09-20T19:55:27.660 に答える