pyqt QtGraphicsView没有在循环内更新

时间:2012-09-20 18:40:55

标签: python pyqt

我有一个基于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) ... 任何的想法? 非常感谢你的帮助!

1 个答案:

答案 0 :(得分:3)

嗯,我想我发现了这个问题 我必须在循环中再添加一行QApplication.processEvents() 否则循环将占用处理时间并使程序无法更新

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

现在可以了。 无论如何,多亏了所有人!