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

好吧,我想我发现了我必须在循环中再添加一行的问题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 回答