我有这段代码:
def paintEvent(self, paintEvent):
self._painter.begin(self)
try:
while True:
color, rectangle = self._paint_queue.popleft()
self._painter.fillRect(rectangle, color)
except IndexError:
pass
finally:
self._painter.end()
def drawInstruction(self, ptr, instruction):
rectangle = QtCore.QRect(
(ptr % self.cols)*CELL_SIZE,
math.floor(ptr/float(self.cols))*CELL_SIZE,
CELL_SIZE,
CELL_SIZE)
self._paint_queue.append((opcode2color[instruction.opcode],
rectangle))
self.update()
每次调用drawInstruction()时,已经绘制的所有内容都会被清除。只留下新的矩形。
每次调用drawInstruction()时重新绘制所有内容都不是解决方案,因为经常会调用drawInstruction()。
答案 0 :(得分:4)
你必须在每个paintEvent
上重新绘制小部件内容,没有别的办法。
也许在你的情况下,它可以更好地绘制在其他绘图设备上(QImage
,QPixmap
,QPicture
,...),并在每个绘制事件上绘制它