我有一个基于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)
...
任何的想法?
非常感谢你的帮助!
答案 0 :(得分:3)
嗯,我想我发现了这个问题
我必须在循环中再添加一行QApplication.processEvents()
否则循环将占用处理时间并使程序无法更新
for i in xrange(10):
qimage = .... #make some changes to qimage
view.scene().items().setPixmap(QPixmap.fromImage(qimage))
QApplication.processEvents()
现在可以了。 无论如何,多亏了所有人!