【发布时间】:2015-09-27 19:23:22
【问题描述】:
我一直在 PySide [source] 中实现康威人生游戏。到目前为止,它工作得很好,直到在某些情况下我还没有弄清楚,我用来显示网格的 QGraphicsView(它由 QGraphicsScene 上的几个 QGraphicsRectItems 组成)突然停止连续绘制。窗口的其余部分保持响应,游戏线程继续运行并发出信号让 ui 更新当前代号。只有当窗口获得焦点时,graphicsView 才会更新大约一秒钟,然后再次冻结。
我觉得这种行为特别奇怪,因为我根本没有覆盖paintEvent,也没有调用重绘/更新方法,但是游戏线程所做的是根据每一代应该具有的状态更新每个 RectItem 的画笔颜色。
关于什么可能导致这种情况的任何想法?
顺便说一句,这是在 Kubuntu 14.04.3 / KWin 4.11.11 / Qt 4.8.6 上
【问题讨论】:
-
我在 PyQt4 中使用计算繁重的后台线程和 QGraphicsView 时遇到了同样的问题。在 PyQt5 中情况更糟,即使重新获得焦点也不会更新视图,而是需要调整窗口大小:P。您是否找到了比您自己的答案更好的解决方案?